18.4. 将引用附加到镜像标签
以下流程演示了如何使用 oras
CLI 使用 OCI 发行版 spec 1.1 支持的不同模式将引用程序附加到镜像标签。这可用于为容器镜像附加和管理其他元数据,如引用者到容器镜像。
先决条件
-
您已下载了
oras
CLI。如需更多信息,请参阅安装 https://oras.land/docs/installation。 - 您可以访问 OCI 介质工件。
流程
输入以下命令标记 OCI 介质工件:
podman tag <myartifact_image> <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag>
$ podman tag <myartifact_image> <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将工件推送到 Red Hat Quay registry。例如:
podman push <myartifact_image> <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag>
$ podman push <myartifact_image> <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令,使用带有
oras
的 OCI 1.1 引用API
模式来附加清单:oras attach --artifact-type <MIME_type> --distribution-spec v1.1-referrers-api <myartifact_image> \ <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag> \ <example_file>.txt
$ oras attach --artifact-type <MIME_type> --distribution-spec v1.1-referrers-api <myartifact_image> \ <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag> \ <example_file>.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令使用 OCI 1.1 引用器
标签
模式附加清单:oras attach --artifact-type <MIME_type> --distribution-spec v1.1-referrers-tag \ <myartifact_image> <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag> \ <example_file>.txt
$ oras attach --artifact-type <MIME_type> --distribution-spec v1.1-referrers-tag \ <myartifact_image> <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag> \ <example_file>.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令
使用标签
模式发现工件的引用器:oras discover --insecure --distribution-spec v1.1-referrers-tag \ <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag>
$ oras discover --insecure --distribution-spec v1.1-referrers-tag \ <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
quay.io/testorg3/myartifact-image@sha256:db440c57edfad40c682f9186ab1c1075707ce7a6fdda24a89cb8c10eaad424da └── doc/example └── sha256:2d4b54201c8b134711ab051389f5ba24c75c2e6b0f0ff157fce8ffdfe104f383
quay.io/testorg3/myartifact-image@sha256:db440c57edfad40c682f9186ab1c1075707ce7a6fdda24a89cb8c10eaad424da └── doc/example └── sha256:2d4b54201c8b134711ab051389f5ba24c75c2e6b0f0ff157fce8ffdfe104f383
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令使用
API
模式发现工件的引用器:oras discover --distribution-spec v1.1-referrers-api \ <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag>
$ oras discover --distribution-spec v1.1-referrers-api \ <quay-server.example.com>/<organization_name>/<repository>/<image_name>:<tag>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选。您还可以使用
/v2/<organization_name>/<repository_name>/referrers/<sha256_digest&
gt; 端点来发现引用器。要实现此目的,您必须在config.yaml
文件中生成 v2 API 令牌并设置FEATURE_REFERRERS_API: true
。更新
config.yaml
文件,使其包含FEATURE_REFERRERS_API
字段。例如:# ... FEATURE_REFERRERS_API: true # ...
# ... FEATURE_REFERRERS_API: true # ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令对凭证进行 Base64 编码:
echo -n '<username>:<password>' | base64
$ echo -n '<username>:<password>' | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
abcdeWFkbWluOjE5ODlraWROZXQxIQ==
abcdeWFkbWluOjE5ODlraWROZXQxIQ==
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令使用 base64 编码的令牌,并将 URL 端点改为 Red Hat Quay 服务器:
curl --location '<quay-server.example.com>/v2/auth?service=<quay-server.example.com>&scope=repository:quay/listocireferrs:pull,push' --header 'Authorization: Basic <base64_username:password_encode_token>' -k | jq
$ curl --location '<quay-server.example.com>/v2/auth?service=<quay-server.example.com>&scope=repository:quay/listocireferrs:pull,push' --header 'Authorization: Basic <base64_username:password_encode_token>' -k | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{ "token": "<example_token_output>..." }
{ "token": "<example_token_output>..." }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
输入以下命令使用 v2 API 令牌列出存储库下清单的 OCI 引用器:
GET https://<quay-server.example.com>/v2/<organization_name>/<repository_name>/referrers/sha256:0de63ba2d98ab328218a1b6373def69ec0d0e7535866f50589111285f2bf3fb8
$ GET https://<quay-server.example.com>/v2/<organization_name>/<repository_name>/referrers/sha256:0de63ba2d98ab328218a1b6373def69ec0d0e7535866f50589111285f2bf3fb8 --header 'Authorization: Bearer <v2_bearer_token> -k | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow