天天看點

docker 自建證書 私有 registry 搭建

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的圖檔
    docker 自建證書 私有 registry 搭建