docker - Docker 注册表镜像
问题描述
我正在尝试将 docker 镜像设置为拉/推图像的默认镜像。
根据文档,我已经使用以下内容设置了文件 /etc/docker/daemon.json:
{
"registry-mirrors": ["https://localregistry"]
}
然后我尝试以下方法:
docker login localregistry
docker pull localregistry/image:tag > it works
docker pull image:tag > doesn't work
我总是"no basic auth credentials error"
从 docker 守护进程中获取信息,但是从注册表日志中我得到了err.code="manifest unknown" err.detail="unknown tag"
任何想法?我正在使用 docker 版本 19.03.08
解决方案
docker login localregistry
首先,我希望这是更改问题的名称,因为注册表名称localregistry
不起作用......
docker pull localregistry/image:tag > it works
这工作的事实表明您可能有一个注册表名称,主机名中带有.
或:
。否则 docker 会尝试从Docker Hub 上localregistry/image:tag
的用户那里拉取数据。localregistry
docker pull image:tag > doesn't work
这应该总是有效的,如果它真的是 Docker Hub 的镜像,那么故障对用户应该是透明的。发生的情况是将名称解析为docker.io/library/image:tag
,首先尝试从 中提取localregistry/library/image:tag
,然后任何错误都回退到从 Docker Hub 中提取,并且最终向用户显示任何错误。
最有可能的问题是您没有library
将图像的存储库名称包含在本地注册表中。
如果您使用它来包含 Docker Hub 上不存在的图像,那么我将跳过镜像并简单地明确引用镜像。否则会为不易察觉的非直觉失败创造许多机会。例如,可以将陈旧的镜像推送到您的镜像来代替上游镜像,并且 Docker 将停止从上游拉取更新。而且由于任何镜像错误都会退回到 Hub,如果您使用无法控制上游的图像名称,其他人可能会在 Hub 上使用该名称并开始将未知甚至恶意图像注入您的服务器。
如果这不能回答您的问题,那么我建议您使用实际图像名称和日志中的错误消息来显示具体失败的问题(您可以屏蔽部分必要的注册表名称)。
推荐阅读
- excel - 将组合框链接到 excel vba 中的文本框 - 错误 1004
- python - 如何从列表列表中删除所有子集
- javascript - 如何进行合规检查?
- apache - Apache 虚拟主机 IP 地址指向另一个 DocumentRoot
- python - 如何使用 pandas 读取使用 XlsxWriter 编写的公式结果?
- mysql - mysql - 所有用户每小时的汇总结果
- string - 新样式格式说明符引发标记化错误
- curl - PHP & RabbitMQ & 执行远程控制器,通过 curl 从其他 Web 服务器下载数据
- django - Django REST Framework 在 Gunicorn 上运行缓慢
- java - Realm 用户身份验证:如何在注册 Realm 的 SyncCredentials API 时传递其他用户信息?