本文档介绍了与容器相关的关键概念,包括注册表、仓库和制品。此外,本文档还提供了一些关于这些概念如何应用于 Artifact Registry 的基本信息。
注册表
注册表用于存储和分发容器映像和制品,这些映像和制品按名称组织在 仓库中。注册表可以包含单个仓库 ,也可以包含多个仓库,并且可以是公开的,也可以是私有的。
Docker Hub 和 Artifact Registry 等注册表服务提供了创建公开或私有仓库的选项。拉取公开映像时,务必了解可能存在的安全问题。如需详细了解漏洞 监控和减少依赖项占用空间,请参阅 依赖项管理。
注册表分为多个仓库,每个仓库存储单个容器映像。借助 Artifact Registry,您可以在单个 项目中创建多个仓库,并将某个特定区域位置 与每个仓库相关联。相关仓库可以按标签分组。Artifact Registry 仓库和映像管理
在 Artifact Registry Docker 格式的仓库中,您可以在同一仓库中存储多个具有不同名称的容器映像。映像的每个版本都由其映像 摘要标识,并且可以与 标记相关联。 标记可以是可变的,也可以是不可变的。如需详细了解容器映像 版本和标记,请参阅容器映像版本。
Artifact Registry 通常会引用映像路径的各个部分来 标识项目、 区域位置以及映像的名称,并使用 标记或清单摘要 来标识正确的版本。例如:
docker push -docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
是仓库的 位置docker.pkg.dev是 Docker 格式仓库的主机名。PROJECT是由您的 Google Cloud 项目 ID创建的命名空间。quickstart-docker-repo是您在项目中存储映像的命名空间。在 Artifact Registry 中,路径的这一部分称为仓库。quickstart-image是quickstart-image所有版本的名称,通常称为 映像。tag1是指定映像版本的标记。
Google 图片
制品和映像都可以存储在 Artifact Registry 中。制品可以是任何内容:文本文件、Docker 映像或 Helm 图表,而映像通常是指容器映像。容器映像是包含在任何环境中运行所需的所有元素的软件包。如需了解详情,请参阅 什么是容器。
映像会 推送或上传到仓库,并从仓库中 拉取或下载。为了指定正确的映像和版本,必须指定唯一的注册表和制品。
如需详细了解 Artifact Registry 中的仓库和映像名称, 请参阅 仓库和映像名称。
层
存储在仓库中的容器映像是使用 层以增量方式构建的。不同的映像可以使用一些相同的层。层的定义方式因映像类型而异。例如,Dockerfile 中的每条指令都对应于 Docker 映像中的一层。在注册表中,具有相同层的映像会共享这些层,从而提高存储效率。 出于安全考虑,层不会在不同的注册表之间共享。
删除容器映像时,层不会立即删除。注册表中任何映像未引用的层每天都会删除。
标记
用户在向仓库推送或从仓库拉取映像时添加标记,以指定映像的版本。一个映像可以有一个或多个标记,也可以没有标记。 如果您使用的是可变标记,并且使用相同的标记推送映像两次,则该标记将从第一个映像中移除并移至第二个映像,从而使第一个映像没有标记。您仍然可以使用其 清单摘要访问未标记的映像。
如果您使用的是不可变标记,则不允许执行以下操作:
- 删除带标记的映像。仍然允许删除未标记的映像。
- 从映像中移除标记。
- 推送的映像的标记已由仓库中映像的另一个版本使用。
latest 标记是一种特殊标记,当推送的映像没有标记时,系统会附加该标记。
例如:
docker push -docker.pkg.dev/my-project/my-repo/hello-app
会将映像推送到 hello-app:latest
docker pull -docker.pkg.dev/my-project/my-repo/hello-app
会拉取映像 hello-app:latest。
请务必注意,当映像推送到具有 latest 以外标记的仓库时,系统不会添加 latest 标记,因此 latest 映像可能会落后于最新的更改。我们建议您为版本使用 latest 以外的标记。
清单
映像清单用于唯一标识和指定每个映像中的层。 清单由称为清单摘要的唯一 SHA-256 哈希标识。 清单摘要比标记更可靠、更安全,因为在具有可变标记的仓库中,同一映像的多个版本可以推送到同一标记,从而导致某些映像没有标记,而每个映像都由其清单摘要唯一指定。
如果您使用工具扫描或分析映像,由这些工具生成的结果将仅对扫描的映像有效。为了确保您部署已经过扫描的映像,您无法依赖标记,因为该标记引用的映像可能会更改。
如需详细了解 Artifact Registry 特定的标记和清单, 请参阅 管理映像 和 使用容器映像。
映像预热
对于使用映像流式传输且对延迟时间敏感的应用,等待映像在新的节点或实例上首次 拉取(通常称为“冷启动”)可能会导致 不必要的延迟。借助预热 ,您可以在请求映像之前显式开始将映像下载到 Image Streaming 缓存中。此过程有助于确保您的映像在 GKE 集群请求时可快速交付。
如需预热映像,请使用 Artifact Registry API。如需查看相关说明,请参阅 通过映像预热缩短延迟时间。
后续步骤
- Docker 快速入门
- 使用容器映像
- Helm 快速入门
- 使用 Helm 图表
- 了解 DevOps 并探索 DORA 研究项目。