极狐GitLab 容器镜像库

您可以使用集成的容器镜像库,来存储每个极狐GitLab 项目的容器镜像。

要为您的极狐GitLab 实例启用容器镜像库,请参阅管理员文档

note 如果您从 Docker Hub 拉取容器镜像,您还可以使用 GitLab Dependency Proxy 来避免遇到速率限制并加快流水线速度。

查看容器镜像仓库

您可以查看项目或群组的容器镜像仓库。

  1. 转到您的项目或群组。
  2. 转至 部署 > 容器镜像库

您可以在此页面上搜索、排序、过滤和删除容器镜像。您可以通过从浏览器复制 URL 来共享过滤视图。

在容器镜像仓库中查看指定容器镜像的标签

您可以使用容器镜像哭的 标签详情 页面来查看与给定的容器镜像关联的标签列表:

  1. 在左侧边栏中,选择 搜索或转到 并找到您的项目或群组。
  2. 在左侧边栏中,选择 部署 > 容器镜像库
  3. 选择您的容器镜像。

那你可以查看每个标签的详细信息,例如发布时间、消耗的存储量以及清单和配置摘要。

您可以在此页面上搜索、排序(按标签名称)并删除标签。 您可以通过从浏览器复制 URL 来共享过滤视图。

使用来自容器镜像仓库的镜像

要下载并运行托管在容器镜像仓库中的容器镜像:

  1. 在左侧导航栏,选择 搜索或转到 并找到您的项目或群组。
  2. 在左侧导航栏,选择 部署 > 容器镜像库
  3. 找到您想要工作的容器镜像,然后选择 复制镜像路径 )。

  4. 使用 docker run 命令,使用复制的链接:

    docker run [选项] registry.example.com/group/project/image [参数]
    
note 您必须使用身份验证以从私有仓库下载容器镜像。

镜像命名约定

镜像遵循以下命名约定:

<registry URL>/<namespace>/<project>/<image>

例如,如果您的项目是 gitlab.example.com/mynamespace/myproject,那么您的镜像必须至少命名为 gitlab.example.com/mynamespace/myproject/my-app

您可以将其他名称附加到镜像名称的末尾,深度最多为三层。

例如,这些都是名为 myproject 的项目中镜像的所有有效镜像名称:

registry.example.com/mynamespace/myproject:some-tag
registry.example.com/mynamespace/myproject/image:latest
registry.example.com/mynamespace/myproject/my/image:rc1

移动或重命名容器镜像库镜像

容器仓库的路径总是匹配与相关项目的仓库路径,因此只能移动或重命名容器镜像库,而不是项目本身。相反地,您可以重命名移动整个项目。

重命名容器仓库的项目仅在 JihuLab.com 上支持。

在私有化部署实例上,在移动或重命名群组和项目之前,您可以删除所有容器镜像。

为项目禁用容器镜像仓库

默认情况下,容器镜像仓库是启用的。

然而,您可以为项目移除容器镜像仓库:

  1. 在左侧导航栏,选择 搜索或转到 并找到您的项目。
  2. 选择 设置 > 通用
  3. 展开可见性、项目功能、权限部分并禁用 容器仓库
  4. 选择 保存更改

部署 > 容器镜像库 入口从项目的左侧导航栏中删除。

更改容器镜像库的可见性

默认情况下,每个有权访问项目的人都可以看到容器镜像仓库。但是,您可以更改项目的容器镜像仓库的可见性。

有关此设置授予用户的权限的更多详细信息,请参阅 容器镜像仓库可见性权限

  1. 在左侧导航栏,选择 搜索或前往 并找到您的项目。
  2. 选择 设置 > 通用
  3. 展开可见性、项目功能、权限部分。
  4. 容器镜像库 下,从下拉列表中选择一个选项:

    • 具有访问权限的任何人(默认):容器镜像仓库对所有有权访问项目的人可见。如果项目是公开的,那么容器镜像仓库也是公开的。如果项目是内部的或私有的,那么容器镜像仓库也是内部的或私有的。

    • 仅项目成员:容器镜像仓库仅对具有报告者角色或更高角色的项目成员可见。这类似于将容器镜像仓库可见性设置为 具有访问权限的任何人 的私有项目的行为。

  5. 选择 保存修改

容器镜像库可见性权限

查看 Container Registry 和拉取镜像的能力由 Container Registry 的可见性权限控制。您可以通过 UI 上的可见性设置 或 API 更改。其它权限如更新 Container Registry、推送或删除镜像等不受此设置影响。但是,禁用 Container Registry 会禁用所有 Container Registry 操作。

    匿名
(互联网上的任何人)
Guest 报告者、开发者、维护者和所有者
具有 Container Registry 可见性的公开项目
设置为 具有访问权限的任何人 (UI) 或 enabled (API)
查看容器镜像库
并拉取镜像
Yes Yes Yes
具有 Container Registry 可见性的公开项目
设置为 仅项目成员 (UI) 或 private (API)
查看容器镜像库
并拉取镜像
No No Yes
具有 Container Registry 可见性的内部项目
设置为 具有访问权限的任何人 (UI) 或 enabled (API)
查看容器镜像库
并拉取镜像
No Yes Yes
具有 Container Registry 可见性的内部项目
设置为 仅项目成员 (UI) 或 private (API)
查看容器镜像库
并拉取镜像
No No Yes
具有 Container Registry 可见性的私有项目
设置为 具有访问权限的任何人 (UI) 或 enabled (API)
查看容器镜像库
并拉取镜像
No No Yes
具有 Container Registry 可见性的私有项目
设置为 仅项目成员 (UI) 或 private (API)
查看容器镜像库
并拉取镜像
No No Yes
容器镜像库设置为 disabled 的任何项目 Container Registry 上的所有操作 No No No

支持的镜像类型

  • OCI 一致性引入于极狐GitLab 16.6。

容器镜像仓库支持 Docker V2 和 OCI 格式的镜像。此外,容器镜像仓库遵循 OCI 分发规范。

OCI 支持意味着您可以在仓库中托管 OCI 格式的镜像,例如 Helm 3+ chart 软件包。在极狐GitLab API 和 UI 中,没有格式之间的区别。

容器镜像签名

  • 容器镜像签名展示引入于极狐GitLab 17.1。

在极狐GitLab 容器镜像仓库中,您可以使用 OCI 1.1 manifest subject 字段来关联具有Cosign 签名的容器镜像。 您可以在没有搜索该签名标签的情况下查看与其关联的容器镜像的签名信息。

查看容器镜像的标签时,在每个具有关联签名的标签旁边显示图标。要查看签名的详细信息,选择图标。

先决条件:

用 OCI 引用数据签名容器镜像

要使用 Cosign 向签名添加引用数据时,您必须:

  • 设置 COSIGN_EXPERIMENTAL 环境变量为 1
  • --registry-referrers-mode oci-1-1 添加到签名命令中。

比如:

COSIGN_EXPERIMENTAL=1 cosign sign --registry-referrers-mode oci-1-1 <container image>
note 尽管极狐GitLab 容器镜像仓库支持 OCI 1.1 manifest 的 subject 字段,但它不完全实现 OCI 1.1 Referrers API。