gcloud auth configure-docker 失败(config.json 无法读取为 JSON)

Posted

技术标签:

【中文标题】gcloud auth configure-docker 失败(config.json 无法读取为 JSON)【英文标题】:gcloud auth configure-docker fail (config.json could not be read as JSON) 【发布时间】:2018-04-11 08:48:09 【问题描述】:

我尝试将我的 docker 映像推送到 Google 容器注册表,但在 Ubuntu 16.04 上验证 gcloud 服务时出现错误:

$ gcloud auth configure-docker

这是我收到的错误消息:

ERROR: (gcloud.auth.configure-docker) Docker configuration file [/home
/username/.docker/config.json] could not be read as JSON: could not 
retrieve Docker client version

我的 docker 版本是:

Client:
    Version:    18.03.0-ce
    API version:    1.37
    Go version: go1.9.4
    Git commit: 0520e24
    Built:  Wed Mar 21 23:10:01 2018
    OS/Arch:    linux/amd64
    Experimental:   false
    Orchestrator:   swarm

Server:
    Engine:
    Version:    18.03.0-ce
    API version:    1.37 (minimum version 1.12)
    Go version: go1.9.4
    Git commit: 0520e24
    Built:  Wed Mar 21 23:08:31 2018
    OS/Arch:    linux/amd64
    Experimental:   false

我在 Ubuntu 16.04 上尝试过其他版本:

$ apt-cache madison docker-ce

这些版本被缓存:

18.03.0~ce-0~ubuntu
17.12.1~ce-0~ubuntu
17.12.0~ce-0~ubuntu
17.09.1~ce-0~ubuntu
17.09.0~ce-0~ubuntu
17.06.2~ce-0~ubuntu
17.06.1~ce-0~ubuntu ...

我的 config.json 是:


 "auths": ,
 "credHelpers": 
   "asia.gcr.io": "gcr",
   "eu.gcr.io": "gcr",
   "gcr.io": "gcr",
   "staging-k8s.gcr.io": "gcr",
   "us.gcr.io": "gcr"
 

【问题讨论】:

这个错误表示gcloud找不到docker版本。运行 $ docker version --format '.Client.Version' 会发生什么? 你好 Kristen,我尝试了命令 $ docker version --format '.Client.Version',它显示 17.06.1~ce。我还将我的 docker 版本从 17.06.1~ce-0~ubuntu 更改为 18.03.0~ce-0~ubuntu 但这不起作用。 但是我有另一台使用 docker 1.13.1 的计算机,它可以将图像推送到 gcloud。 【参考方案1】:

我在https://github.com/GoogleCloudPlatform/docker-credential-gcr/issues/10找到了答案。

我只是按照beatcracker回答的解决方案:

    检查您的 docker 版本是否低于 18.03。如果要使用命令“$ gcloud docker -- push”,这是 gcloud sdk 的限制。

    安装虚拟盒子安装docker-machine。

    安装 docker-machine。

    运行命令:$ docker-machine create default

    运行命令:$ eval $(docker-machine env default)

    运行命令:$ docker-credential-gcr configure-docker

    运行命令:$ gcloud auth configure-docker

然后你可以将 docker 镜像推送到 gcr !

【讨论】:

【参考方案2】:

我正在处理 GCP Cloud Shell 中的类似问题。 当我检查/home/username/.docker 文件夹时,我发现config.json 文件是空的。

删除文件并再次执行$ gcloud auth configure-docker 后,一切都按预期工作。

【讨论】:

【参考方案3】:

在我的情况下,它只是意味着 docker 服务没有运行;显然~/.docker/config.json 文件仅在创建时才创建

要从终端解决此问题:sudo systemctl start docker.service

【讨论】:

以上是关于gcloud auth configure-docker 失败(config.json 无法读取为 JSON)的主要内容,如果未能解决你的问题,请参考以下文章

在 python 脚本中运行 gcloud auth 和 gsutil 命令

尝试运行 bigquery 时 gcloud auth 登录问题 403 访问被拒绝

gcloud auth configure-docker 失败(config.json 无法读取为 JSON)

gcloud auth activate-service-account [错误] 请确保提供的密钥文件有效

来自JSON的gcloud auth activate-service-account用于设置当前项目

模仿 AWS CLI / gcloud 命令行参数