測試環境
主機 | IP | 角色 |
---|---|---|
ubuntu-B | 172.18.18.158 | 私有倉庫服務器 |
ubuntu-A | 172.18.18.159 | 工作節點 |
registry v2安裝
docker pull registry:2
倉庫服務器配置
- 配置域名
將172.18.18.158 reg.itmuch.com追加到/etc/hosts文件
echo '172.18.18.158 reg.itmuch.com' >> /etc/hosts
- 配置證書
在ubuntu-B中使用OpenSSL生成自簽名證書
mkdir -p certs && cd certs
openssl genrsa -out reg.itmuch.com.key 2048
鍵入命令后需要填入的信息:
其中確保Common Name填入域名
將證書添加到docker的根證書中
mkdir -p /etc/docker/certs.d/reg.itmuch.com
cp ~/certs/reg.itmuch.com.crt /etc/docker/certs.d/reg.itmuch.com/
- 配置登錄認證
使用htppasswd命令創建用戶,先安裝apache2-utils
apt-get install apache2-utils
新加入用戶名為testuser,密碼為testpassword的用戶
mkdir auth
htpasswd -Bbn testuser testpassword > auth/htpasswd
- 啟動測試
啟動registry
docker run -d \
--restart=always \
--name registry \
-v `pwd`/certs:/certs \
-v `pwd`/auth:/auth \
-e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/reg.itmuch.com.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/reg.itmuch.com.key \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-p 443:443 \
registry:2
push鏡像
docker tag nginx reg.itmuch.com/ nginx
docker push reg.itmuch.com/ nginx
工作節點配置
- 配置域名
同樣先配置域名,將172.18.18.158 reg.itmuch.com追加到/etc/hosts文件
echo ‘172.18.18.158 reg.itmuch.com’ >> /etc/hosts
在ubuntu-A機器中使用scp命令登錄ubuntu-B拷貝證書文件
scp root@172.18.18.158:/root/certs/reg.itmuch.com.crt /etc/docker/certs.d/reg.itmuch.com/
- 測試
出現提示no basic auth credentials
說明需要認證,先登入倉庫,使用testuser賬戶
docker login reg.itmuch.com
重新push
docker tag swarm reg.itmuch.com/swarm
docker push reg.itmuch.com/swarm