如何将 GCP > Container Registry 身份验证密钥添加到 Docker config.json?

时间:2021-05-04 13:22:19

标签: docker google-cloud-platform cloud google-container-registry

如何将服务帐户(GCP-> Container Registry)的身份验证密钥添加到 docker daemon.json?

通常我在 docker daemon.json 中写入 url 和 user:pass 中的 base64,docker 可以从私有注册表中拉取数据。

GCP 容器注册怎么样?我生成了一个 json 密钥并且可以正常工作。

docker login -u _json_key --password-stdin https://gcr.io < credentials.json

我可以登录 GCP Container Registry 并从中拉取映像,但如何将此密钥添加到 docker daemon.json 以便 docker 自动从私有存储库中拉取映像。

谢谢。

1 个答案:

答案 0 :(得分:0)

您似乎已经选择了身份验证方法:

Choosing an authentication method

关于 JSON 密钥文件,请使用以下准则来限制对容器映像的访问:

要创建仅用于 Container Registry 代码库的新服务帐号和服务帐号密钥:

  1. 创建一个将与 Container Registry 交互的新服务帐号。
  • 您可以在本地计算机或 Cloud Shell 中使用 Cloud SDK 运行以下命令。

一个。创建服务帐户。将 NAME 替换为服务帐号的名称。

gcloud projects add-iam-policy-binding PROJECT_ID --member "serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role "roles/ROLE"

B.为服务帐号授予角色。将 PROJECT_ID 替换为您的项目 ID,并将 ROLE 替换为服务帐号的相应 Cloud Storage 角色。

gcloud iam service-accounts keys create keyfile.json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com
  1. 获取将与 Container Registry 交互的服务帐号的密钥。

您可以在本地机器或 Cloud Shell 中使用 Cloud SDK 运行以下命令。本页面上的说明使用文件名 keyfile.json 作为密钥文件。

_json_key
  1. 验证是否为服务帐户正确配置了 permissions。如果您使用的是 Compute Engine 服务帐号,则必须正确配置权限和访问范围。

  2. 使用服务帐户密钥作为密码以通过 Docker 进行身份验证。

用户名是 keyfile.json(不是您的服务帐户的名称)
cat keyfile.json | docker login -u _json_key --password-stdin https://HOSTNAME 是您创建的服务帐号密钥

例如:

gcr.io

其中 HOSTNAME 是 us.gcr.ioeu.gcr.ioasia.gcr.io--password-stdin

或者,对于不支持 docker login -u _json_key -p "$(cat keyfile.json)" https://HOSTNAME 的旧版 Docker 客户端:

gcr.io

其中 HOSTNAME 是 us.gcr.ioeu.gcr.ioasia.gcr.io 或 {{1}}。

相关问题