首页 > 解决方案 > 为什么要使用私有 Docker 注册表?

问题描述

当有人可以在源代码控制中共享他们的 dockerfile 并让 docker 映像消费者直接从 dockerfile 构建时,为什么还要使用私有 docker 注册表docker build

在我未经训练的眼中,私有 docker 注册表似乎与源代码控制具有相同的目的,只是它增加了复杂性,因为它已与您所在的代码分支解耦,因此您(或您的 CI/CD 服务器更重要)必须重建要拉的标签。

标签: docker

解决方案


当您在真实机器上进行部署时(假设您有一个在 10 台机器上部署的工作),通常您并不想一遍又一遍地重建映像。

相反,您可以构建一次映像,将其存储在某个地方(???)然后可能在测试环境中部署,运行一些测试,确保它确实是一个好的映像(启动、测试通过等),然后部署到生产环境中。

所以这个“某处”意味着你应该有一些注册表,如果你不想使用 docker hub - 你可以使用私有 docker 注册表。

这从安全性(如果不需要,请不要在云上发布)和性能(在专用网络中的服务器之间移动图像更快)都是有意义的。

如果您正在运行 kubernetes,您还可以将其配置为从 docker 注册表中提取图像并根据 kubernetes 部署文件中指定的这些图像运行 pod。

如果您在 AWS 上运行,则可以使用 docker registry 来运行 Fargate 或 ECS 等服务。他们将负责跨机器横向扩展(就像 k8s 所做的那样),但他们仍然需要从某个地方获取图像,嗯,它是一个私有注册表(在这种情况下在云中称为 ECS - Elastic Container Registry)。

底线,在许多(简单)情况下,你可以没有它,但在其他一些情况下,它非常方便


推荐阅读