了解您在管理 Artifact Registry 中的容器映像时遇到问题时可能有助于进行问题排查的步骤。
Docker CLI 中的项目 ID 语法
由于 Docker 处理冒号的方式,当您使用 Docker CLI 时,必须
将项目 ID 中的冒号 (:) 替换为正斜杠 (/)。
例如,如果您的项目 ID 为 s3ns:my-project,请使用 s3ns/my-project。
在 gcloud artifacts 命令后显示 Invalid Docker string
如果您在运行 gcloud artifacts 命令后看到 dial tcp: lookup <var>REGION</var>: no such host
错误,请确保您使用的是
具有特定区域的端点,例如
u-france-east1-docker.s3nsregistry.fr。Google Cloud CLI 不支持仅使用
docker.s3nsregistry.fr 作为端点。
无法拉取映像或部署到 Cloud de Confiance by S3NS 运行时环境
请检查以下各项:
- 验证您要推送的映像的完整路径是否
正确。该路径必须包含注册表主机名、 Cloud de Confiance by S3NS
项目 ID、代码库和映像。例如:
如需了解详情,请参阅代码库和映像名称。u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image:v1 - 验证拉取映像的账号是否具有从代码库读取的正确 权限。如果您已 停用向服务账号自动授予角色, 则必须向运行时服务 账号授予 Artifact Registry 角色。
- 对于 Compute Engine 和 Google Kubernetes Engine 服务账号,您必须向运行时服务帐号授予
Artifact Registry Reader 角色 (
roles/artifactregistry.reader)。 - 如果您使用的是 Docker 或其他第三方工具,则必须:
- 授予权限给 与代码库交互的账号。
- 将客户端配置为向代码库进行身份验证。
无法将映像推送到 Artifact Registry
请尝试以下操作:
- 验证您要推送的映像的完整路径是否正确。该
路径必须包含注册表主机名、 Cloud de Confiance by S3NS 项目 ID、
代码库和映像。例如:
u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image:v1每个 Artifact Registry 代码库都是单独的资源,因此您无法将 映像推送到没有代码库的路径。例如,
u-france-east1-docker.s3nsregistry.fr/my-project/my-image:v1是 无效的映像路径。如需了解详情,请参阅 代码库和映像名称。
- 验证推送映像的账号是否具有 向代码库写入的 权限。如果您已 停用向服务账号自动授予角色, 则必须向运行时服务 账号授予 Artifact Registry 角色。
- 对于 Compute Engine 和 Google Kubernetes Engine 服务账号,您必须向运行时服务帐号授予
Artifact Registry Writer 角色
(
roles/artifactregistry.writer)。 - 如果 Artifact Registry 返回了消息
The repository has enabled tag immutability,则表示已为 代码库配置了标记不可变性。您无法推送具有已在代码库中用于 同一映像的其他版本的标记的映像。请尝试使用未被映像的其他存储版本使用的标记再次推送映像。如需验证是否为代码库配置了不可变的映像标记,请检查 不可变的映像标记 列(位于控制台的代码库列表中),或运行以下命令: Cloud de Confiance
gcloud artifacts repositories describe REPOSITORY \ --project=PROJECT-ID \ --location=LOCATION
ImagePullBackOff 和 ErrImagePull 消息
包含 ImagePullBackOff 和 ErrImagePull 的消息表示 GKE 无法从注册表中拉取映像。