0

我正在尝试在不使用 gcloud 界面的情况下将 Google Container Registry 与 GitLab CI 一起使用。

使用“使用 JSON 密钥文件”部分下列出的文档: https ://cloud.google.com/container-registry/docs/advanced-authentication

我已将我的服务帐户凭据文件下载为 JSON 文件:

{
  "type": "service_account",
  "project_id": "REDACTED",
  "private_key_id": "REDACTED",
  "private_key": "-----BEGIN PRIVATE KEY-----\nBIGLONGLISTOFGARBLEDTEXTNSTUFF\n-----END PRIVATE KEY-----\n",
  "client_email": "somethingsomething@developer.gserviceaccount.com",
  "client_id": "NUMBERSNUMBERSNUMBERS",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url":  "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/somethingsomething%40developer.gserviceaccount.com"
}

然后我尝试使用指定的命令登录:

docker login -u _json_key -p "$(cat google_cred.json)" https://gcr.io

这会产生以下错误:

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

docker login https://gcr.io为我提供了用户名/密码交互式提示,因此据我所知,我的本地 docker 安装不是问题。

有什么我想念的吗?

4

3 回答 3

0

嗨,这现在很容易:

cat google_cred.json | docker login -u _json_key --password-stdin https://gcr.io

我建议添加 --config 选项。埃:

cat google_cred.json | docker --config /tmp/dockerconf login -u _json_key --password-stdin https://gcr.io

将 docker 与“docker --config /configfile”一起使用更加健壮,尤其是在 docker 场景中使用 docker。

于 2021-08-26T08:26:12.870 回答
0

看起来您的客户端无法与您的 Docker 守护进程通信,我假设一些简单的事情就像docker ps返回相同的消息?

你需要sudo在命令前面吗?您通常如何调用 Docker?

于 2016-12-01T21:44:41.950 回答
0

在尝试使用 docker 登录之前,需要确保通过本地 docker 连接到 Google Compute Engine 实例。所以命令序列(在 macOS 上)类似于:

export GOOGLE_APPLICATION_CREDENTIALS=<your-cred.json>
eval $(docker-machine env <your-google-instance>)
docker login -u _json_key -p "$(cat <your-cred.json>)" https://gcr.io
于 2016-12-02T16:24:15.963 回答