您如何从 swarm 外部安全地将图像推送到 docker 1.13 registry:2 服务?

how do you securely push an image to a docker 1.13 registry:2 service from outside the swarm?

我是 运行 OSX 上 docker 1.13 集群中本地托管 docker 机器虚拟机中的 docker 注册表服务,通过:

docker service create --name registry --with-registry-auth --publish
5000:5000 registry:2

该服务是 运行,我可以在 swarm 管理器上 push/pull 图像,但是当我尝试使用端口 5000 从托管 swarm VM 的机器将图像推送到服务时:

Get https://<IP of swarm manager>:5000/v1/_ping: http: server gave HTTP response to HTTPS client

有谁知道如何从集群外部安全地访问docker注册服务?可能是常见问题解答,但我没有在 docker 网站上找到解决它的文章。它们似乎都处理容器 TLS 设置或从 swarm 内部访问服务器(这相当不错)。

谢谢!

有关保护注册表套接字的文档涉及 TLS 设置,因为这正是您需要配置的内容。 The registry documentation discusses this at a high level. The same steps to create a TLS CA, key, and certificate for the docker socket can be used for the registry socket and are documented on docker's site.

请注意,如果您从自己的 CA 生成自己的证书,则需要信任您的 CA。有多种方法可以仅针对 docker 执行此操作,但更简单(并且可能不太安全)的解决方案是将其添加到主机上的根 CA 列表中。此过程因 linux 分布而异。