
我已經設定了一個 Docker 註冊表(連接埠 5000),然後可以透過 https(連接埠 443)透過反向代理 (HAproxy) 存取網際網路。
我的反向代理不是偵聽連接埠 80(出於各種原因)- 僅 443。
但是,當我嘗試將映像拉取/推送到註冊表時,出現以下錯誤:
> docker push dockerreg.mydomain.tld/foo/bar:tag
The push refers to repository [dockerreg.mydomain.tld/foo/bar]
67e5bc702bd3: Layer already exists
1ee6a18298af: Layer already exists
0d8d066a4449: Layer already exists
....
402111a9b517: Layer already exists
5be968ab3b04: Layer already exists
b8d33b7d28fe: Layer already exists
Patch http://dockerreg.mydomain.tld/v2/foo/bar/blobs/uploads/840a9fc2-5c10-4c0e-b674-82f76c3794a3?_state=vcTZPbOrQmhcKwilCyutNGwVpFjvWigJCApZHA834757Ik5hbWUiOiJmb3Rvd2V0dGVyL2NsZWFuIiwiVVVJRCI6Ijg0MGE5ZmMyLTVjMTAtNGMwZS1iNjc0LTgyZjc2YzM3OTRhMyIsIk9mZnNldCI6MCwiU3RhcnRlZEF0IjoiMjAyMS0wOC0xNFQyMTozODo1Mi42MzgxNjY5NTdaIn0%3D:
dial tcp 1.2.3.4:80: i/o timeout
顯然它嘗試透過 http/80 存取註冊表
我能夠使用 docker login 命令,https://dockerreg....
但 docker pull/push 命令無法使用 https:// 運行
有沒有辦法在我的反向代理的連接埠 80 上不使用 https 重定向來存取我的 docker 註冊表?
答案1
您需要設定 httphost
選項:https://docs.docker.com/registry/configuration/#http
註冊表外部可存取位址的完全限定 URL。如果存在,則在建立生成的 URL 時使用它。否則,這些 URL 源自於客戶端請求。
這可以在註入註冊表的設定檔中設置,也可以使用環境變數 進行設定REGISTRY_HTTP_HOST
。