带有镜像的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 registrydocker 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启动。在您的情况下:
- 添加
--registry-mirror=http://dockerstore:5555
以告诉守护程序更喜欢使用本地镜像,而不是dockerhub。资源 - 添加
--insecure-registry dockerstore:5000
无需进一步配置即可访问私有注册表。 - 重新启动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