附件是 OCI 工件,只能存储在 Docker 格式的代码库
准备工作
- 如果您还没有账号, 创建一个 Docker 格式的标准代码库。
- (可选)为 Google Cloud CLI 命令配置默认值。
所需的角色
如需获取管理附件所需的权限, 请让管理员授予您 代码库中的以下 IAM 角色:
-
查看和下载附件:
Artifact Registry Reader (
roles/artifactregistry.reader
) -
创建附件:Artifact Registry Writer (
roles/artifactregistry.writer
) -
删除附件:
Artifact Registry 代码库管理员 (
roles/artifactregistry.repoAdmin
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
设置 Oras(可选)
除了使用 gcloud CLI 之外,您还可以选择使用 Oras 创建、列出和下载附件。
安装 Oras 1.2 或更高版本。进行验证 请运行
oras version
命令。将 Oras 配置为authenticate 与 Artifact Registry 集成
创建连接
您可以使用 gcloud CLI 或 Oras 创建连接。
gcloud
在使用下面的命令数据之前,请先进行以下替换:
ATTACHMENT
:完全限定名称 附件。例如,projects/my-project/locations/us-west1/repositories/my-repo/attachments/my-attachment
。或者,您也可以仅提供附件 ID 并使用--location
和--repository
标志。TARGET
:附件将引用的工件的完全限定版本名称或 Artifact Registry URI。您可以使用 摘要或标记。例如us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
。TYPE
:附件的type
属性。这必须遵守artifactType
属性的 OCI 规范。ATTACHMENT_NAMESPACE
:a 特定于附件的变量,用于标识附件数据源。例如example.com
。FILES
:要添加到附件中的本地文件的逗号分隔列表。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud artifacts attachments create ATTACHMENT \ --target=TARGET \ --type=TYPE \ --attachment-namespace=ATTACHMENT_NAMESPACE \ --files=FILES
Windows (PowerShell)
gcloud artifacts attachments create ATTACHMENT ` --target=TARGET ` --type=TYPE ` --attachment-namespace=ATTACHMENT_NAMESPACE ` --files=FILES
Windows (cmd.exe)
gcloud artifacts attachments create ATTACHMENT ^ --target=TARGET ^ --type=TYPE ^ --attachment-namespace=ATTACHMENT_NAMESPACE ^ --files=FILES
gcloud artifacts attachments create
命令。
Oras
使用 Oras 创建附件时,Artifact Registry 会生成一个随机 UUID 用作附件名称。
在运行命令之前,请先进行以下替换:
ARTIFACT_TYPE
: 附件的artifactType
。IMAGE_URI
:附件所引用的图片容器的 URI。FILE
: 作为元数据添加到附件中。MEDIA_TYPE
:图层的mediaType
。
oras attach --artifact-type ARTIFACT_TYPE IMAGE_URI FILE:MEDIA_TYPE
以下示例将创建一个附件,其中包含一个文件
hello-world.txt
,它是指容器映像 my-image
,由
其 URI 和标记:
oras attach --artifact-type doc/example \
us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1 \
hello-world.txt:application/vnd.me.hi
其中:
doc/example
用于定义附件的artifactType
属性。us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
是 URI,其中包含附件将引用的容器映像版本的标记。hello-world.txt
是附件将用作其数据的本地文件。application/vnd.me.hi
定义了mediaType
层。
如需查看完整指南和更多示例,请参阅 oras attach
文档。
列表附件
一个容器映像可以拥有任意数量的引用该映像的附件。您可以 列出连接的方法,使用 Google Cloud 控制台、gcloud CLI 或 Oras。
控制台
在 Google Cloud 控制台中,打开代码库页面。
点击代码库名称可查看代码库中的映像。
如需查看映像的版本,请点击映像名称。
点击相应的映像版本。
如需查看该版本的附件,请点击附件标签页。
gcloud
在使用下面的命令数据之前,请先进行以下替换:
TARGET
:您要为其列出附件的工件的完全限定版本名称或 Artifact Registry URI。您可以使用 摘要或标记。例如us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud artifacts attachments list \ --target=TARGET
Windows (PowerShell)
gcloud artifacts attachments list ` --target=TARGET
Windows (cmd.exe)
gcloud artifacts attachments list ^ --target=TARGET
gcloud artifacts attachments list
命令。
Oras
在运行该命令之前,请先进行以下替换:
IMAGE_URI
:所列附件引用的目标图片的 URI。
oras discover --distribution-spec v1.1-referrers-api IMAGE_URI
以下示例列出了容器映像 my-image
的附件,该映像通过 URI 和标记进行标识:
oras discover --distribution-spec v1.1-referrers-api \
us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
其中:
v1.1-referrers-api
是使用的 Referrer API。如需了解详情,请参阅 如需了解详情,请参阅分发规范。us-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
是包含要为其列出附件的容器映像版本的标记的 URI。
如需查看完整指南和更多示例,请参阅 oras discover
文档。
下载附件
您可以使用 gcloud CLI 或 Oras 下载附件。
gcloud
在使用下面的命令数据之前,请先进行以下替换:
ATTACHMENT
:完全限定名称 附件。例如,projects/my-project/locations/us-west1/repositories/my-repo/attachments/my-attachment
。或者,在此处仅提供附件 ID,并使用--location
和--repository
标志。DESTINATION
:本地文件系统中用于下载附件的路径。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud artifacts attachments download ATTACHMENT \ --destination=DESTINATION
Windows (PowerShell)
gcloud artifacts attachments download ATTACHMENT ` --destination=DESTINATION
Windows (cmd.exe)
gcloud artifacts attachments download ATTACHMENT ^ --destination=DESTINATION
ATTACHMENT
,您还可以提供
--oci-version-name
标志,后跟连接的完整版本名称或
Artifact Registry URI。您可以使用摘要或标记。例如 projects/my-project/locations/us-west1/repositories/my-repo/packages/my-package/versions/sha256:abc123
。有关详情,请参阅
gcloud artifacts attachments download
命令。
奥拉斯
在运行命令之前,请先进行以下替换:
DESTINATION
: 目标目录。ATTACHMENT_URI
: 要下载的附件的 URI。这是映像容器的 附件所指的签名,后跟附件的唯一 SHA。
oras pull -o DESTINATION ATTACHMENT_URI
以下示例将下载由其 URI 和摘要标识的附件:
oras pull -o . us-west1-docker.pkg.dev/my-project/my-repo/my-image@sha256:xxxx
其中:
-o .
将当前目录命名为下载目的地。us-west1-docker.pkg.dev/my-project/my-repo/my-image@sha256:xxxx
是包含要下载的附件摘要的映像 URI。
如需查看完整指南和更多示例,请参阅 oras pull
文档。
删除附件
您可以使用 Google Cloud 控制台或 gcloud CLI 直接删除附件。您可以通过删除其所引用的容器映像来间接删除附件。
直接删除附件
您可以通过以下任一方式直接删除附件:
控制台
在 Google Cloud 控制台中,打开代码库页面。
点击代码库名称可查看代码库中的映像。
点击映像名称以查看该映像的版本。
点击要查看其附件的图片版本。
点击附件标签页可查看该版本的附件。
点击要删除的附件的摘要。
点击删除。
在确认对话框中,点击删除。
gcloud
在使用下面的命令数据之前,请先进行以下替换:
ATTACHMENT
:完全限定名称 附件。例如,projects/my-project/locations/us-west1/repositories/my-repo/attachments/my-attachment
。或者,在此处仅提供附件 ID,并使用--location
和--repository
标志。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud artifacts attachments delete ATTACHMENT
Windows (PowerShell)
gcloud artifacts attachments delete ATTACHMENT
Windows (cmd.exe)
gcloud artifacts attachments delete ATTACHMENT
gcloud artifacts attachments list
命令。
间接删除附件
如果容器映像被删除,则所有引荐附件也会一并删除 已删除。这适用于手动删除容器映像,也适用于清理政策导致的删除。