Jump to section

什么是容器镜像仓库?

复制 URL

容器镜像仓库是一种存储库(或存储库集合),可用来存储和访问容器镜像。容器镜像仓库可以为基于容器型应用开发提供支持,通常作为 DevOps 流程的一部分。容器镜像仓库可以直接连接到 DockerKubernetes这样的容器编排平台。 

容器镜像仓库可以充当在系统之间共享容器镜像的中介,方便开发人员创建和交付云原生应用,为他们节省宝贵的时间。

容器镜像中包含组成应用的文件和组件。与虚拟机(VM)不同,容器是在 Linux® 操作系统(OS)之上运行的轻量级软件包。容器镜像可以通过倍增来扩展,满足工作负载变化的需要。它们常与敏捷开发、DevOps 方法以及持续集成和持续交付(CI/CD)紧密关联。 

容器镜像包括系统库、系统工具以及运行应用所需的其他平台设置,为开发人员享受可移植性和敏捷性的优势,快速地扩展应用或创建新应用。

借助 Buildah 等开源工具,您可以创建兼容 OCI 和 Docker 的镜像,不论有无 Dockerfile 或现有容器镜像作为起点,了却过程中许多的猜测。 

在开发容器镜像时,您需要一个位置来保存、共享和访问所创建的镜像,这正是容器镜像仓库的功用。

容器镜像仓库基本上提供了一个场所,供开发人员用于存储容器镜像并通过相应过程来共享,即上传(推送)到镜像仓库,再下载(拉取)到另一系统(如 Kubernetes 集群)。 

拉取镜像后,其中的应用就可在该系统上运行。

除了容器镜像,镜像仓库还会存储应用编程接口(API)路径和访问控制参数,以便进行容器之间的通信。API 有助于消除意外耦合,这种耦合会限制变更,也是导致中断的常见原因,尤其是在应用不再驻留于同一数据中心的混合云环境中。

容器镜像还可以通过服务网格进行通信,后者是居于容器化服务之间并有助于实现扩展的基础架构层。对于以微服务架构构建的云原生应用而言,利用服务网格,可以将大量离散服务整合为一个功能应用。

云原生计算基金会认为,容器(包括容器镜像和镜像仓库)和微服务构成了云原生应用开发的基础。容器和微服务是完全自包含的,因此是创建可移植云原生应用的强大工具。 

容器将应用进程、运行时文件和操作系统依赖项与系统的其余部分隔离开。它们可在混合云环境中提供更大的可移植性,而且部署时间也比 虚拟机(VM)短得多。这样一来,开发人员能够更加轻松地从容器镜像仓库推送和拉取所需的内容,从而专注于构建优秀的产品,而不会被底层基础架构或执行细节分散精力。

在 DevOps 环境中,通过使用容器(以及容器镜像/镜像仓库),开发人员可以独立部署各项应用服务,这免除了合并代码更改的需要,改进了测试,并且有助于在测试和生产中进行故障隔离。

容器镜像仓库有公共和私有两种类型。

公共镜像仓库通常供希望尽快启动和运行镜像仓库的个人或小团队使用。不过,随着企业发展壮大,这可能会造成更复杂的安全问题,如修补、隐私和访问控制等方面。 

通过私有镜像仓库,您可将安全与隐私整合到远程托管或内部托管的企业容器镜像存储中。这种私有镜像仓库通常附带高级安全防护功能和技术支持。

大多数云提供商提供私有镜像仓库服务:Google 提供了 Google Container Registry,AWS 提供了 Amazon Elastic Container Registry(ECR),而微软则提供了 Azure 容器注册表。

使用私有的内部镜像仓库可以带来最大的安全性和配置潜力,但其管理要谨慎,而且要确保镜像仓库的基础架构和访问控制保留在组织内部。

为企业选择私有容器镜像仓库服务时需要考虑一些重要事项,包括:

  • 支持多种身份验证系统

  • 对本地镜像采用基于角色的访问控制管理(RBAC)

  • 借助漏洞扫描功能增强安全性和配置

  • 在可审计日志中记录使用情况,以将活动溯源到单个用户

  • 进行优化以实现自动化

私有镜像仓库具备企业就绪型功能,让企业能够以安全有效的方式在内部访问容器镜像。借助多种身份验证系统来部署相应措施,验证镜像仓库中存储的容器镜像。

例如,镜像必须先由上传者进行数字签名,然后才能推送到镜像仓库,并且启用活动跟踪并用户擅自上传。

RBAC 可根据个人的角色来管理允许执行的用户操作。开发人员需要上传到镜像仓库和从镜像仓库下载的访问权限,而其他团队成员或测试人员只需要下载权限。对于拥有 Active Directory(AD)或轻量级目录访问协议(LDAP)等用户管理系统的企业,可将该系统直接链接到容器镜像仓库并用于 RBAC。

公司可以选择自行创建和部署容器镜像仓库,也可选择使用商业支持的私有镜像仓库服务。

红帽® OpenShift® 是一个企业就绪型 Kubernetes 容器平台,能够管理混合云、多云和边缘部署,提供跨任何云基础架构的一致性。通过红帽 OpenShift,只需几分钟就可为新的微服务或应用置备好所需的环境。除了中间件、语言、框架和数据库等其他云服务外,它还包含一个私有镜像仓库,为管理容器镜像提供基本的功能。 

私有镜像仓库可以作为红帽 OpenShift 托管服务的一部分部署到红帽庞大的合作伙伴生态系统中的云提供商,在 AzureAmazon Web Services(AWS)IBM CloudGoogle Cloud 提供无缝的体验。红帽 OpenShift 支持与您可能已在使用的其他私有镜像仓库进行整合,如 JFrog 的 Artifactory 以及 Sonatype Nexus。

红帽还提供自我管理服务,这些服务基于其混合云基础构建,具有增强的安全防护功能和您可能在数据中心使用的其他软件元素。如果您需要更高级的安全防护和技术支持功能,可以使用作为可扩展的独立企业镜像仓库选项提供的红帽 Quay

继续阅读

文章

有状态 VS 无状态

要判断一个应用为有状态或无状态,取决于交互状态的记录时长以及该信息所需的存储方式。

文章

什么是 Quarkus?

Quarkus 是一个为 Java 虚拟机(JVM)和原生编译而设计的 Kubernetes 原生 Java 堆栈,专门根据容器而对 Java 进行了优化。

文章

什么是无服务器?

无服务器是一种云原生开发模型,可使开发人员专注构建和运行应用,而无需管理服务器。

详细了解云原生应用

产品

企业级应用平台,包含一系列久经测试的服务,可在您选择的基础架构上将应用推向市场。

相关资源

培训

免费培训

利用微服务架构开发云原生应用