排查容器映像问题

了解您在管理 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 运行时环境

请检查以下各项:

  1. 验证您要推送的映像的完整路径是否 正确。该路径必须包含注册表主机名、 Cloud de Confiance by S3NS 项目 ID、代码库和映像。例如:
    u-france-east1-docker.s3nsregistry.fr/my-project/my-repo/my-image:v1
    如需了解详情,请参阅代码库和映像名称
  2. 验证拉取映像的账号是否具有从代码库读取的正确 权限。如果您已 停用向服务账号自动授予角色, 则必须向运行时服务 账号授予 Artifact Registry 角色。

无法将映像推送到 Artifact Registry

请尝试以下操作:

  1. 验证您要推送的映像的完整路径是否正确。该 路径必须包含注册表主机名、 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 是 无效的映像路径。

    如需了解详情,请参阅 代码库和映像名称

  2. 验证推送映像的账号是否具有 向代码库写入的 权限。如果您已 停用向服务账号自动授予角色, 则必须向运行时服务 账号授予 Artifact Registry 角色。
    • 对于 Compute Engine 和 Google Kubernetes Engine 服务账号,您必须向运行时服务帐号授予 Artifact Registry Writer 角色 (roles/artifactregistry.writer)。
  3. 如果 Artifact Registry 返回了消息 The repository has enabled tag immutability,则表示已为 代码库配置了标记不可变性。您无法推送具有已在代码库中用于 同一映像的其他版本的标记的映像。请尝试使用未被映像的其他存储版本使用的标记再次推送映像。

    如需验证是否为代码库配置了不可变的映像标记,请检查 不可变的映像标记 列(位于控制台的代码库列表中),或运行以下命令: Cloud de Confiance

    gcloud artifacts repositories describe REPOSITORY \
          --project=PROJECT-ID \
          --location=LOCATION
      

ImagePullBackOff 和 ErrImagePull 消息

包含 ImagePullBackOffErrImagePull 的消息表示 GKE 无法从注册表中拉取映像。