建議參考github搭建 https://github.com/goharbor/harbor-helmhtml
Docker--------Harbor registry安全認證搭建 [ Https ] 前端
wget http://harbor.orientsoft.cn/harbor-v1.3.0-rc4/harbor-offline-installer-v1.3.0-rc4.tgz
harbor-offline-installer-v1.3.0-rc4.tgznode
Harbor的架構mysql
主要組件包括proxy,他是一個nginx前端代理,主要是分發前端頁面ui訪問和鏡像上傳和下載流量,上圖中經過深藍色先標識;ui提供了一個web管理頁面,固然還包括了一個前端頁面和後端API,底層使用mysql數據庫;registry是鏡像倉庫,負責存儲鏡像文件,當鏡像上傳完畢後經過hook通知ui建立repository,上圖經過紅色線標識,固然registry的token認證也是經過ui組件完成;adminserver是系統的配置管理中心附帶檢查存儲用量,ui和jobserver啓動時候回須要加載adminserver的配置,經過灰色線標識;jobsevice是負責鏡像複製工做的,他和registry通訊,從一個registry pull鏡像而後push到另外一個registry,並記錄job_log,上圖經過紫色線標識;log是日誌彙總組件,經過docker的log-driver把日誌彙總到一塊兒,經過淺藍色線條標識。linux
[root@master cert]# pwd
/data/cert
[root@master cert]# ls
hh.registry.com.crt hh.registry.com.csr hh.registry.com.key hh.srl server.crt server.csr server.key server.srlnginx
帶域名參考
[root@harbor cert]# openssl req -newkey rsa:4096 \
-nodes -sha256 -keyout ca.key -x509 -days 365 \
-out ca.crt -subj "/C=CN/L=wuhan/O=lisea/CN=harbor-registry"git
https://blog.51cto.com/lisea/1936839
mkdir -p /data/cert && cd /data/cert
#建立本身的CA證書(不使用第三方權威機構的CA來認證,本身充當CA的角色)
openssl genrsa -out ca.key 2048 # 生成根證書私鑰(無加密)
#生成自簽名證書(使用已有私鑰ca.key自行簽發根證書)
openssl req -x509 -new -nodes -key ca.key -days 10000 -out ca.crt -subj 「/CN=Harbor-ca」 github
req 產生證書籤發申請命令
-x509 簽發X.509格式證書命令。X.509是最通用的一種簽名證書格式。
-new 生成證書請求
-key 指定私鑰文件
-nodes 表示私鑰不加密
-out 輸出
-subj 指定用戶信息
-days 有效期web
建立服務器端證書
#生成服務器端私鑰和CSR簽名請求
openssl req -newkey rsa:4096 -nodes -sha256 -keyout server.key -out server.csr # 一路回車
#簽發服務器證書
echo subjectAltName = IP:192.168.80.42 > extfile.cnf
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 365 -extfile extfile.cnf -out server.crt sql
x509 簽發X.509格式證書命令。
-req 表示證書輸入請求。
-days 表示有效天數
-extensions 表示按OpenSSL配置文件v3_req項添加擴展。
-CA 表示CA證書,這裏爲ca.crt
-CAkey 表示CA證書密鑰,這裏爲ca.key
-CAcreateserial 表示建立CA證書序列號
-extfile 指定文件
node不肯定是否要這樣作
將 ca 根證書依次複製到上述建立的目錄中
cp ca.crt /etc/docker/certs.d/192.168.80.42
cp server.crt /etc/docker/certs.d/192.168.80.42
docker-compose start /down
docker login -u test -p Harbor12345 hh.registry.com
docker push hh.registry.com/test/nginx:v1.0.1
docker rmi hh.registry.com/test/nginx:v1.0.1
docker pull hh.registry.com/test/nginx:v1.0.1
https://www.cnblogs.com/huangjc/p/6270405.html?utm_source=itdadao&utm_medium=referral
注意事項
cat /etc/pki/tls/openssl.cnf
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
subjectAltName = IP:172.1.1.131
更新
harbor
ansible_ssh_host=192.168.1.106 ansible_ssh_user=root
ansible_ssh_host=192.168.1.107 ansible_ssh_user=root
ansible_ssh_host=192.168.1.108 ansible_ssh_user=root
harbor安裝
systemctl stop firewalld.service
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce-18.06.1.ce-3.el7 -y
#yum list docker-ce --showduplicates|sort -r
systemctl start docker
systemctl enable docker
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
mkdir -p /opt/soft
cd /opt/soft
wget http://harbor.orientsoft.cn/harbor-v1.3.0-rc4/harbor-offline-installer-v1.3.0-rc4.tgz
tar -zxf harbor-offline-installer-v1.3.0-rc4.tgz
IP=ifconfig|grep inet|head -1|awk '{print $2}'
sed -i 's/mydomain.com/registry.com/g' harbor.cfg
sed -i 's/hostname = reg.registry.com/hostname = hh.registry.com/g' harbor.cfg
sed -i 's/http/https/g' harbor.cfg
hostname = hh.registry.com # 指定私有倉庫的主機名,能夠是IP地址,也能夠是域名
ui_url_protocol = https # 用戶訪問私倉時使用的協議,默認時http,配置成https
db_password = root123 # 指定mysql數據庫管理員密碼
harbor_admin_password:Harbor12345 # harbor的管理員帳戶密碼
ssl_cert = /data/cert/hh.registry.com.crt # 設置證書文件路徑
ssl_cert_key = /data/cert/hh.registry.com.key # 設置證書密鑰文件路徑
mkdir -p /data/cert
cd /data/cert/
localdomain=hh.registry.com
openssl req -nodes -subj "/C=CN/ST=GuangDong/L=ShenZhen/CN=$localdomain" -newkey rsa:2048 -keyout $localdomain.key -out $localdomain.csr
openssl x509 -req -days 3650 -in $localdomain.csr -signkey $localdomain.key -out $localdomain.crt
openssl x509 -req -in $localdomain.csr -CA $localdomain.crt -CAkey $localdomain.key -CAcreateserial -out $localdomain.crt -days 10000
docker login -u test -p Harbor12345 hh.registry.com
#x509: certificate signed by unknown authority
cat /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry hh.registry.com