8

我需要一些关于设置“远程私有 Docker 注册表”的提示。

Docker-Registry 上的README.md主要关注在同一主机上运行的私有注册表,没有指定其他机器如何远程访问它(或者可能太复杂而无法理解)。

到目前为止,我发现了这些线程:

Docker:从另一个服务器的私有注册表中提取问题(仍然是一个开放线程,没有提供解决方案。关于Github 的进一步讨论给出了关于代理的提示,但它是如何工作的?)

创建一个远程私有注册表 (可能最接近我正在寻找的内容,但是我需要什么命令才能从其他机器访问注册表?)

如何使用您自己的注册表(同样,这侧重于在同一主机上运行注册表。它确实提到在端口 443 或 80 上运行以供其他机器访问,但需要更多详细信息!)

线索不多了,非常感谢任何输入!

4

2 回答 2

7

我可以通过参考以下内容来设置远程私有注册表: 远程访问私有 docker-registry

脚步:

  1. 在注册表主机上,运行docker run -p 5000:5000 registry
  2. 在客户端主机上,通过以下方式启动 Docker 服务docker -d --insecure-registry 10.11.12.0:5000(将 10.11.12.0 替换为您自己的注册表 ip,您可能希望守护进程,以便在 shell 关闭后继续运行。)

编辑:或者,您可以编辑 Docker 的初始化脚本(/etc/sysconfig/docker 用于 RHEL/CentOS,/var/lib/docker 用于 Ubuntu/Debian)。添加这一行other_args="--insecure-registry 10.11.12.0:5000",然后做一个service docker restart. 这是推荐的方法,因为它会守护 Docker 进程。

现在,试试它是否有效:

  1. 在客户端,下载一个busybox图像docker pull busybox
  2. 给它一个新标签docker tag busybox 10.11.12.0:5000/busybox
  3. 推送到注册表docker push 10.11.12.0:5000/busybox
  4. 验证推送docker search 10.11.12.0:5000/busybox
  5. 删除所有图像并将其从注册表中拉出docker rmi busybox 10.11.12.0:5000:busybox docker pull 10.11.12.0:5000:busybox
  6. 运行docker images应该有你刚刚从你自己的远程私有注册表中提取的图像。
于 2014-11-05T22:04:16.993 回答
2

我以以下方式使用私有注册表:

  • 它有 FQDN:docker.mycompany.com
  • 我创建的所有图像都有名称:docker.mycompany.com/image1、docker.mycompany.com/image2 等

之后,一切都在无缝地工作:

  • 将图像推送到注册表:

    码头工人推码头工人.mycompany.com/image1

  • 拉取并运行图像:

    码头工人运行 docker.mycompany.com/image2

于 2014-11-07T11:17:50.303 回答