我正在尝试设置一个 docker 环境,其中使用本地不安全的镜像来加快速度。由于它只是一个本地实验室环境,因此不安全也没关系。
我使用 Sonatype Nexus Repository Manager OSS 3.35.0-02 作为本地镜像。
我已经根据文档设置了docker配置,如下所示:
{
"registry-mirrors": ["http://192.168.8.10:8181"],
"insecure-registries": ["192.168.8.10:8181"]
}
docker info
似乎确认设置已经加载:
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
192.168.8.10:8181
127.0.0.0/8
Registry Mirrors:
http://192.168.8.10:8181/
现在,我可以测试 Nexus 是否正常工作,因为这个有效:
docker rmi alpine:3.13.3 ; docker pull 192.168.8.10:8181/alpine:3.13.3
从某种意义上说,图像已被下载,我可以看到它出现在 Nexus 仓库中。
但运行普通命令:
docker rmi alpine:3.13.4 ; docker pull alpine:3.13.4
由于图像已下载,因此似乎绕过了镜像,但它并未出现在 Nexus 存储库中。
这种情况发生在 macOS BigSur 11.5.1 + Docker Desktop 1.4.0 和运行 Ubuntu Server 20.04(Docker 版本 20.10.7、构建 20.10.7-0ubuntu1~20.04.2)的 Vagrant VM 上。
谢谢。
答案1
虽然我还没有以一种干净的方式解决问题,但我找到了一种解决方法。在镜像名称前面加上镜像名称可以使拉取操作与镜像一起正常工作,但问题是镜像标签保留了镜像名称,即:
$ docker pull 192.168.8.10:8181/alpine:3.13.4
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.8.10:8181/alpine 3.13.4 49f356fa4513 2 years ago 5.61MB
但是我可以通过在拉取图像后添加一个干净的标签并删除“脏”标签来解决这个问题:
$ docker image tag 192.168.8.10:8181/alpine:3.13.4 alpine:3.13.4
$ docker image rm 192.168.8.10:8181/alpine:3.13.4
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine 3.13.4 49f356fa4513 2 years ago 5.61MB
答案2
您的图片名称错误。没有等效名称:
192.168.8.10:8181/alpine:3.13.3
在 Docker Hub 上。当你拉取时alpine:3.13.4
,实际上是在拉取docker.io/library/alpine:3.13.4
。因此你的镜像需要有以下镜像:
192.168.8.10:8181/library/alpine:3.13.3
注册表镜像的设计是当镜像发生故障时始终转向上游源。这些是镜像,而不是访问控制系统。