如何将服务帐户(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 自动从私有存储库中拉取映像。
谢谢。
答案 0 :(得分:0)
您似乎已经选择了身份验证方法:
Choosing an authentication method
关于 JSON 密钥文件,请使用以下准则来限制对容器映像的访问:
要创建仅用于 Container Registry 代码库的新服务帐号和服务帐号密钥:
一个。创建服务帐户。将 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
您可以在本地机器或 Cloud Shell 中使用 Cloud SDK 运行以下命令。本页面上的说明使用文件名 keyfile.json 作为密钥文件。
_json_key
验证是否为服务帐户正确配置了 permissions。如果您使用的是 Compute Engine 服务帐号,则必须正确配置权限和访问范围。
使用服务帐户密钥作为密码以通过 Docker 进行身份验证。
用户名是 keyfile.json
(不是您的服务帐户的名称)
cat keyfile.json | docker login -u _json_key --password-stdin https://HOSTNAME
是您创建的服务帐号密钥
例如:
gcr.io
其中 HOSTNAME 是 us.gcr.io
、eu.gcr.io
、asia.gcr.io
或 --password-stdin
。
或者,对于不支持 docker login -u _json_key -p "$(cat keyfile.json)" https://HOSTNAME
的旧版 Docker 客户端:
gcr.io
其中 HOSTNAME 是 us.gcr.io
、eu.gcr.io
、asia.gcr.io
或 {{1}}。