- 取得連結
- 以電子郵件傳送
- 其他應用程式
Docker 官方文件建議私有的 Docker Registry 使用 TLS 協定,但是申請「有效憑證」大部分是要錢的! 官方文件也有提到將 Registry 設定到 insecure 清單可忽略 TLS 協定(不過不建議) 本文章將介紹將 Docker Registry 設定在 insecure 清單進行存取。
Docker 環境將建立在 Ubuntu Server
文章節錄至 Docker 官方文件,可直接到參考資料檢視官方文件。
部分名詞為自行翻譯,若有誤可在下方留言告知,將盡速修正
文章環境(主機、用戶端)
- 作業系統
- Ubuntu 16.04.3 LTS
- Docker 版本
- Docker version 17.06.0-ce
主機清單
- DockerRegistry
- 建立 docker registry 的 Ubuntu Server
- DockerClient
- 取得 DockerRegistry Docker image 的 Ubuntu Server
建立 Docker Registry
在「DockerRegistry」上執行 registry 的 docker images。
docker run -d -p 5000:5000 --name registry registry
啟用 container 後,私有 Registry 就建立完成。
![run a local registry](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/run-a-local-registry.gif)
更多進階設定請參考官方文件
設定「DockerRegistry」為 insecure
接下來在「DockerClient」將「DockerRegistry」設定為到 insecure 清單。
insecure 設定檔路徑「/etc/docker/daemon.json」
檔案不存在時請自行建立(Windows 環境的設定檔路徑請參考官方文件)
![edit daemon.json config insecure](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/edit-daemon-json.gif)
將「DockerRegistry」位址與連接埠設定到 insecure 清單
{
"insecure-registries":["192.168.0.90:5000"]
}
![insecure setting json](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/insecure-setting-json.gif)
感謝網友 Hank Fang 補充說明,此步驟完成後需要重新啟動 docker 服務才可以生效(官方文件中也有說明)
重新啟動指令參考下面回復 :)
驗證設定結果
重新命名「DockerClient」的 docker image tag
[domain||ip-address]:[port]/[image_name]
docker tag redis 192.168.0.90:5000/private-redis
![tag exist docker image](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/tag-exist-image.gif)
![tag with hostname and port](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/image-tag-with-hostname-port.gif)
使用 docker push 將 image push 到「DockerRegistry」的 Registry
docker push 192.168.0.90:5000/private-redis
![push image to private registry](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/push-image-to-private-registry.gif)
![push image to private registry finish](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/push-image-to-private-registry-finish.gif)
刪除 push 上去的 docker image
docker rmi 192.168.0.90:5000/private-redis
![remove pushed docker image](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/remove-pushed-image.gif)
刪除後,本機的 image 清單中沒有名為「192.168.0.90:5000/private-redis」的 docker image
![image list without removed image](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/image-list-without-removed-image.gif)
重新 pull 剛剛上傳的 docker image
docker pull 192.168.0.90:5000/private-redis
![pull image from private registry](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/pull-image-from-private-registry.gif)
成功從「DockerRegistry」的 Registry 取得指定的 docker image
![image list after pull from private registry](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/image-list-after-pull-from-private-registry.gif)
沒有設定 insecure 的問題
若「DockerRegistry」的 Registry 並沒有設定到 insecure 清單,會出現下列錯誤。
![get error when not config insecure registry](https://raw.githubusercontent.com/txstudio/blogspot-image/master/docker/registry-insecure/not-insecure-registry-get-pull-error.gif)
參考資料
留言
將「DockerRegistry」位址與連接埠設定到 insecure 清單
回覆刪除這個步驟做完後須重啟docker service才會生效喔
systemctl restart docker
感謝您的教學步驟,很實用
謝謝您的留言,已經將文章做補充 / 很高興能夠對您有幫助
刪除