使用Pulp托管您自己的容器注册表有许多令人信服的理由。以下是其中一些。Linux容器大大简化了软件分发。将应用程序与其运行所需的一切打包在一起的能力有助于提高环境的稳定性和可重复性。虽然有许多用于上传、管理和分发容器镜像的公共注册表,但也有许多令人信服的论据支持托管您自己的容器注册表。让我们来看看为什么自托管有意义,以及免费开源项目Pulp如何帮助您在本地管理和分发容器。您应该考虑托管自己的容器注册表的原因有很多:大小:一些容器镜像非常大。如果您有多个团队下载同一个图像,这可能会花费大量时间并给您的网络和预算带来压力。带宽:如果您在带宽有限的区域工作,或者在出于安全原因限制访问互联网的组织中工作,您需要一种可靠的方法来管理您工作的容器。金钱:服务条款可以改变。外部容器注册表可以引入或增加速率限制阈值,这会严重限制您的操作。稳定性:由于某种原因,托管在外部资源上的容器镜像可能会消失几天。小至更新您所依赖的容器镜像之类的小事都可能导致您希望避免的破坏性更改。隐私:您可能还想开发和分发容器,但不想将它们托管在公共的第三方注册表中。使用Pulp自托管使用Pulp,您可以避免这些问题并完全控制您的容器。1.避免速率限制在Pulp中创建容器镜像的本地缓存允许您组织中的每个人都可以拉取托管在Pulp上的容器镜像,而不是从外部注册表中拉取。这意味着您可以避免速率限制,并且仅在需要新内容时才从外部注册表同步。当您确实需要从外部注册表同步容器时,Pulp首先检查内容是否已经存在,然后再从远程注册表启动同步。如果您受到注册中心的速率限制,您只能镜像您需要的内容,并使用Pulp将其分发到您的组织中。2.组织你的容器使用Pulp,你可以创建一个存储库,然后从任何与DockerRegistryHTTPAPIV2兼容的注册表镜像和同步容器。这包括Docker、GoogleContainerregistry、Quay.io等,还有另一个Pulp服务器。对于如何组合来自不同注册中心的图像容器没有任何限制。您可以自由混合来自不同来源的容器。这允许您组织一组公共和私有容器以满足您的具体要求。3.无风险实验在Pulp中,每次对存储库进行修改时,都会创建一个新的不可变版本。您可以创建存储库的多个版本,例如开发、测试、阶段和生产,并在它们之间推送容器。您可以自由地将容器镜像的最新更新从外部注册表同步到Pulp,然后在开发或其他环境中提供最新的更改。您可以对您认为必要的存储库进行任何修改,并促进容器内容供测试团队或其他环境使用。如果出现问题,您可以回滚到较早的版本。4.只同步你需要的如果你想使用Pulp创建一个容器子集的本地缓存,而不是一个完整的容器注册表,你可以从远程源过滤选定的容器。使用Pulp,有多种内容同步选项,因此您可以只存储您需要的内容,或者配置您的部署以按需缓存内容。5.在断开连接和空气隔离的环境中工作如果您在断开连接或受限环境中工作,您可以将连接的Pulp实例的更新同步到断开连接的Pulp。目前,有计划为Pulp实现原生空气隔离功能,以促进完全断开连接的工作流程。与此同时,作为一种解决方法,您可以使用像Skopeo这样的工具来下载您需要的容器镜像,然后将它们推送到损坏的Pulp容器注册表。以及更多!使用Pulp,您还可以从容器文件构建容器,将私有容器推送到存储库,并在您的组织中分发这些容器。我们将在以后的文章中描述此工作流程。如何开始如果您对自托管容器注册表感兴趣,可以立即安装Pulp。通过添加PulpAnsible安装程序,安装过程已经高度自动化和简化。Pulp具有基于插件的架构。当您安装Pulp时,选择容器插件和您想要管理的任何其他内容插件类型。如果您想测试Pulp,可以立即评估Pulp的容器化版本。如果您有任何问题或意见,请随时通过FreenodeIRC上的#pulp频道与我们联系,我们也很乐意通过我们的邮件列表pulp-list@redhat.com提出问题。