GCP:无法从 Compute Engine 访问 Container Registry

Son*_*ony 5 docker google-compute-engine google-cloud-storage google-cloud-platform docker-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
Run Code Online (Sandbox Code Playgroud)

医生说

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

Son*_*ony 5

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

docker-credential-gcr configure-docker


小智 1

为了从 Google Cloud 注册表中提取映像,您需要使用相关gcloud命令。

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

gcloud docker -- pull gcr.io/my-project/my-image
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看相关文档。

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