gpt4 book ai didi

带镜像的 Docker 私有(private)注册表

转载 作者:IT老高 更新时间:2023-10-28 12:42:31 25 4
gpt4 key购买 nike

我创建了两个 Docker 容器。第一个提供私有(private) 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

现在我想将两者结合起来。每当用户 图像时,它应该首先查询私有(private)注册表,然后再查询镜像。当图像被推送时,它们应该只被推送到私有(private)注册表。

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

最佳答案

您不能只强制所有 docker push 命令推送到您的私有(private)注册表。一个原因是您可以拥有任意数量的这些寄存器。您必须首先通过标记图像来告诉 docker 推送到哪里(见下文)。

以下是设置 docker 主机以使用正在运行的私有(private)注册表和本地镜像的方法。

客户端设置

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

然后在 client 机器上,您应该将额外的选项传递给 docker daemon startup。在你的情况下:

  1. 添加 --registry-mirror=http://dockerstore:5555 告诉守护进程更喜欢使用本地镜像而不是 dockerhub。 source
  2. 添加 --insecure-registry dockerstore:5000 无需进一步配置即可访问私有(private)注册表。见 this answer
  3. 重启 docker 守护进程

使用镜子

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

docker pull debian

在输出中会显示正在从镜像中提取镜像的消息 - dockerstore:5000

使用本地注册表

为了将推送到私有(private)注册表,您必须先标记要推送的镜像,并使用注册表的全名。确保 first part of the tag 中有一个点或冒号。 ,告诉 docker 应该将图像推送到私有(private)注册表。

Docker looks for either a “.” (domain separator) or “:” (port separator) to learn that the first part of the repository name is a location and not a user name.

例子:

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

docker tag 30d39e59ffe2 dockerstore:5000/myapp:stable

将其推送到私有(private)注册表

docker push dockerstore:5000/myapp:stable

那你也可以拉

docker pull dockerstore:5000/myapp:stable

关于带镜像的 Docker 私有(private)注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28557384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com