dockerregistry-mirrors 不用於 FQDN 映像

dockerregistry-mirrors 不用於 FQDN 映像

我在防火牆後面有一個 docker 伺服器,因此除了內部伺服器之外,我無法直接從任何註冊表中提取映像。

我已經配置了註冊表鏡像 (registry-1.docker.iomcr.microsoft.com),如下文件

我的daemon.json樣子:

{
  "registry-mirrors": [
          "https://registry_1_docker_io.example.com",
          "https://mcr_microsoft_com.example.com"
  ] 
}

我可以透過執行 ie 成功從 docker hub 提取映像:

$ docker pull nginx:1
1: Pulling from library/nginx
....
Status: Downloaded newer image for nginx:1

我的問題是我無法從 Microsoft 註冊表中提取映像

# docker pull mcr.microsoft.com/mssql/server:2017-latest
Error response from daemon: Get "https://mcr.microsoft.com/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

docker 嘗試直接連接mcr並忽略我的映像。如果我使用短映像名稱(mssql/server:2017-latest而不是mcr.microsoft.com/mssql/server:2017-latest),它可以工作,但如果兩者上的標籤相同,它可能會從 docker hub 而不是微軟的 mcr 獲取映像。

此外,如果我查看日誌,docker 會按順序嘗試映像的所有代理,因此可能會出現從錯誤的儲存庫取得映像的情況。

有沒有辦法將鏡像標記為特定登錄檔的鏡像?

答案1

有沒有辦法將鏡像標記為特定登錄檔的鏡像?

不,這是 docker 引擎的限制,registry-mirrors僅適用於 Docker Hub。您可以關注問題18818更多細節。

當 docker 在不久的將來將映像處理從 docker 換成 Containerd 時,這種情況可能會發生變化,因為 Containerd 具有不同的處理映像的配置。

相關內容