GCP:无法从 Compute Engine 访问 Container Registry

GCP:无法从 Compute Engine 访问 Container Registry

我有一个 Docker 镜像推送到 Google Container Registry gcr.io/my-project/my-image:latest。在同一个项目中,我创建了一个基于 COS(Container-Optimized OS)的 Google Compute Engine 实例,并赋予了对 Google Storage 的读取权限(默认启用)。我还向其服务帐户授予了对 Google Storage 的读取权限。

但是,我无法从 GCE 实例中提取图像:

$docker pull gcr.io/my-project/my-image:latest
Error response from daemon: repository gcr.io/my-project/my-image not found: does not exist or no pull access

医生说

要从 Compute Engine 实例中提取私有 Docker 映像,请确保您的实例具有对映像存储桶的读取权限。如果您的实例和映像存储桶位于同一个 Google Cloud Platform 项目中,则默认情况下会正确配置此项。

答案1

此命令会自动将 Docker 客户端记录到 GCR 中:

docker-credential-gcr configure-docker

答案2

为了从 Google Cloud Registry 中提取图像,您需要使用相关gcloud命令。

请注意,如果您使用标准 Docker 命令行工具,则必须手动设置授权,因为它不知道 Google 权限或什么是服务帐户。

gcloud docker -- pull gcr.io/my-project/my-image

您可以查看相关文档这里

如果您的应用程序无法使用gcloud命令行工具向 Google Container Registry 进行身份验证,您可以docker login直接使用 进行身份验证。这允许将第三方持续集成解决方案和集群管理技术与 Container Registry 结合使用。您可以查看更多信息这里

答案3

如果您想要将镜像推送到 Container-Optimized OS,您只需在创建 COS 实例时选中 [将容器镜像部署到此 VM 实例],并将注册表镜像的路径 {gcr.io/my-project/my-image} 放在显示的字段中。您可以找到更多信息这里

相关内容