docker registry 搭建,之前寫過一篇部落格是基于非證書registry,用于快速測試環境,今天寫一個關于搭建自建證書搭建registry,以做筆記
- 首先建立存放證書的檔案夾cert,并在檔案夾下生成證書,這裡我用的域名是hub.mydocker.com,指令如下:
mkdir cert
openssl req \
-newkey rsa: -nodes -sha256 -keyout domain.key \
-x509 -days -subj '/CN=hub.mydocker.com/' -out domain.crt
- 生成使用者名密碼,這裡假設使用者名為testuser,密碼為testpassword
mkdir auth
docker run \
--entrypoint htpasswd \
registry:2 -Bbn testuser testpassword > htpasswd
- 停止registry(如果在運作),并重新開機registry
docker stop registry
docker rm registry
docker run -d \
-p : \
--restart=always \
--name registry \
-v /home/docker/data/registry:/var/lib/registry \
-v /home/docker/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v /home/docker/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
registry:2
- 如果之前有設定daemon.json請删除,然後複制domain.crt到docker證書目錄
mkdir -p /etc/docker/certs.d/hub.mydocker.com:
cp domain.crt /etc/docker/certs.d/hub.mydocker.com:/ca.crt
- 在hosts檔案中配置域名hub.mydocker.com,如果伺服器有配置域名就不必操作
- 好了,這時用剛才的使用者名登入試試
docker login hub.mydocker.com:
- 這時會提示輸入使用者名,密碼,輸入如果提示Login Succeeded,則大功告成
- 其他服務按照相同方式,拷貝證書檔案,修改hosts,删除daemon.json(如果有)即可
- 最後貼張Login Succeeded的圖檔