带有镜像的Docker私有注册表

我创建了两个Docker容器。第一个提供专用的Docker注册表,第二个提供官方Docker注册表的镜像:

docker run -d --name registry -v /local/path/to/registry:/registry -e SETTINGS_FLAVOR=local -e STORAGE_PATH=/registry -p 5000:5000 registry

docker run -d --name mirror -v /local/path/to/mirror:/registry -e STORAGE_PATH=/registry -e STANDALONE=false -e MIRROR_SOURCE=https:/registry-1.docker.io -e MIRROR_SOURCE_INDEX=https://index.docker.io -p 5555:5000 registry

现在,我想将两者结合起来。每当用户 提取 图像时,都应首先查询私有注册表,然后查询镜像。当图像被 推送时, 它们仅应被推送到私有注册表。

我不知道如何做到这一点。任何帮助表示赞赏。

回答:

您不能仅仅强制所有 docker push

命令推送到您的私有注册表。原因之一是您可以拥有任意数量的这些寄存器。您必须先通过标记图像来告诉docker将信息推送到何处(请参见下图)。

这是设置Docker主机以与运行中的私有注册表和本地镜像一起使用的方法。

回答:

假设您在名为 dockerstore的 (可解析)主机上同时运行镜像注册表和私有注册表。在端口5555上镜像,在5000上注册。

然后在 计算机上,您应该将其他选项传递给docker daemon启动。在您的情况下:

  1. 添加--registry-mirror=http://dockerstore:5555以告诉守护程序更喜欢使用本地镜像,而不是dockerhub。资源
  2. 添加--insecure-registry dockerstore:5000无需进一步配置即可访问私有注册表。
  3. 重新启动docker daemon

回答:

拉动任何图像时,第一个源将是本地镜像。您可以通过运行docker pull进行确认,例如

docker pull debian

在输出中将显示一条消息称镜像已从镜像中拉出-dockerstore:5000

回答:

送到私有注册表,您必须使用注册表的全名 要推送

。确保标签的第一部分中有一个点或冒号,以告知docker该图像应推送到私有注册表。

Docker寻找“。” (域分隔符)或“:”(端口分隔符)以了解存储库名称的第一部分是位置而不是用户名。

例:

将30d39e59ffe2映像标记为 dockerstore:5000 / myapp:stable

docker tag 30d39e59ffe2 dockerstore:5000/myapp:stable

推送到私人注册表

docker push dockerstore:5000/myapp:stable

那你也可以拉

docker pull dockerstore:5000/myapp:stable

以上是 带有镜像的Docker私有注册表 的全部内容, 来源链接: utcz.com/qa/416680.html

回到顶部