防火墙后面有一个停靠服务器,所以除了内部服务器之外,我不能直接从任何注册表中提取图像。
我配置了两个注册表镜像(registry-1.docker.io
和mcr.microsoft.com
),遵循文档。
我的daemon.json
看起来像:
{
"registry-mirrors": [
"https://registry_1_docker_io.example.com",
"https://mcr_microsoft_com.example.com"
]
}
通过执行以下操作,我可以成功地从码头枢纽提取图像:
$ 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)
对接者试图直接连接到mcr
并忽略我的镜像。如果我使用短图像名(mssql/server:2017-latest
而不是mcr.microsoft.com/mssql/server:2017-latest
),它可以工作,但是如果标记在这两个位置上是相同的,那么它可能从停靠中心获得映像,而不是从微软的mcr。
此外,如果我查看日志,docker将按顺序尝试所有的代理,因此可能会出现从错误的存储库获取图像的情况。
发布于 2023-03-07 21:25:51
是否有任何方法将镜像标记为特定注册表的镜像?
不,这是码头引擎的限制,registry-mirrors
只适用于码头枢纽。您可以跟踪第18818期获得更多详细信息。
在不久的将来,当docker将图像处理从docker替换为收集器时,这种情况可能会发生变化,因为容器具有不同的镜像处理配置。
https://serverfault.com/questions/1125551
复制相似问题