![](/img/trans.png)
[英]docker-credential-desktop not installed or not available in PATH
[英]`docker-credential-gcloud` not in system PATH
在对 gcloud 和 docker 进行最新更新后,我无法访问我的谷歌容器存储库中的图像。 在本地运行时: gcloud auth configure-docker
按照更新 gcloud 后的说明进行操作,我收到以下消息:
WARNING: `docker-credential-gcloud` not in system PATH.
gcloud's Docker credential helper can be configured but it will not work until this is corrected.
gcloud credential helpers already registered correctly.
运行which docker-credential-gcloud
返回 docker docker-credential-gcloud not found
。
我没有其他与 gcloud 相关的路径问题,而且我一生都无法弄清楚如何将 docker-credential-gcloud 安装/添加到路径。 这是我安装的(通过gcloud version
显示):
Google Cloud SDK 197.0.0
beta 2017.09.15
bq 2.0.31
container-builder-local
core 2018.04.06
docker-credential-gcr
gsutil 4.30
我还有 Docker CE 版本 18.03.0-ce-mac60 (23751)。
这是我的 $PATH: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
我还在原始 gcloud 安装上运行了source /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.zsh.inc
。
注意:以下所有docker-credential-gcr
都可以替换docker-credential-gcloud
。 我认为这只是 gcloud 的不同版本,我可能错了。
我也使用 Homebrew Cask 来安装 gcloud。 我安装了docker-credential-gcr
$ gcloud components install docker-credential-gcr
然后就像你说的, which docker-credential-gcr
没有给你任何东西。
所以我运行which gcloud
发现/usr/local/bin
有一个指向 gcloud 的符号链接。 当您首先安装 gcloud 时,此符号链接由 Homebrew 创建。 现在docker-credential-gcr
不是由 Homebrew 安装的,而是由 gcloud 本身安装的,所以没有符号链接。
我打电话给readlink /usr/local/bin/gcloud
并发现 gcloud 安装在/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/
。
然后:
$ ls /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin
在那里你应该看到docker-credential-gcr
在那里列出。
我只是将它链接到/usr/local/bin
:
$ ln -s \
/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/docker-credential-gcr \
/usr/local/bin/
然后运行:
$ docker-credential-gcr configure-docker
它应该会成功。
刚刚在 Windows 上遇到了同样的问题,使用 Linux 容器运行 Docker,Docker 引擎 v19.03.8。 使用 docker 撰写。 我的 dockerfiles 没有使用 gcloud ......
DT1001 dockerpycreds.errors.InitializationError: docker-credential-gcloud 未安装或在 PATH 中不可用
选项 1:编辑gcloud
配置文件并从那里删除所有gcloud
条目。
Windows c:/Users/<your account>/.docker/config.json
Linux & MacOS ~/.docker/config.json
选项 2:转至疑难解答 -> 重置为出厂默认设置。
在此之后,我的 docker compose 正在创建容器并运行图像而没有任何问题。
从未找到直接解决docker-credential-gcloud
问题的方法,但以下内容让我再次启动并运行。 警告:以下内容将删除您所有现有的 docker 映像并安装一堆 gcloud 实用程序:
gcloud components install docker-credential-gcr
,docker-credential-gcr configure-docker
。 screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
umount /var/lib/docker/overlay2
rm -rf /var/lib/docker
新版本的 google-cloud-sdk 只有docker-credential-gcr
而不是docker-credential-gcr
docker-credential-gcloud
。 另一方面,我的一个 python 包总是请求docker-credential-gcloud
。
解决方案是将docker-credential-gcloud
符号链接到docker-credential-gcloud
docker-credential-gcr
:
ln -s /path/to/google-cloud-sdk/bin/docker-credential-gcr /usr/local/bin/docker-credential-gcloud
ls -l /usr/local/bin | grep docker
ls -l /usr/local/bin | grep docker
现在应该打印:
...
docker-credential-gcloud -> /path/to/google-cloud-sdk/bin/docker-credential-gcr
...
似乎真的是 Homebrew Cask 的东西。 我卸载了木桶,然后通过手动下载 tar ball并按照此处所述运行打包的安装脚本来重新安装 Google Cloud SDK。
现在docker-credential-gcloud
在我的路径中:
$ which docker-credential-gcloud
/Users/moritz/google-cloud-sdk/bin/docker-credential-gcloud
通常,此错误表明您的$PATH
变量已被您最近安装的软件包或程序破坏,因此无法找到 Google Cloud SDK。
许多程序在安装时通过更改~/.profile
、 ~/.bash_profile
或~/.bashrc
或它们的非 bash 等效项来更改$PATH
。 使用错误的$PATH
,Google Cloud SDK 在docker
配置但不能被视为可执行文件,因此我们收到此错误。 这假设您过去曾使用过 Google Cloud SDK,但如果gcloud
配置了您的gcloud
,那么您可能已经使用过。 不要重新安装 gcloud 或禁用它,您的系统上已经有了它,这很好。
解决方案是修复您的$PATH
,而不是安装任何东西。
echo $PATH
这应该是一个很长的:
文件所在目录的分隔列表。您在字符串中看到google-cloud-sdk/bin
了吗? 考虑到您在这台计算机上遇到的所有麻烦,字符串是否太短了? 您使用 NVM 但它不见了? 使用 Homebrew 但它不见了? 从命令行尝试brew
,它有效吗?
如果以上任何一项的答案为“否”,请检查上面的文件,看看每个文件的底部是否有任何可能损坏的新条目。 你刚刚安装了什么新东西吗?
某些东西正在破坏您的$PATH
,您需要弄清楚那是什么。 对我来说,它通常通过conda init
命令与 Anaconda Python 有关。 对你来说,它可能是nvm
或其他东西。 弄清楚它是什么并解决问题。 不要使用新的$PATH
重新开始并重新安装相同的东西或禁用gcloud
身份验证。
按照本教程安装 gcloud 和 docker-credential-gcr
$ ln -s /usr/local/google-cloud-sdk/bin/docker-credential-gcr /usr/local/bin/docker-credential-gcloud
$ rm -rf ~/.docker
$ docker-compose build --pull
完成!
当我尝试从 Google Cloud Build SSH 到引擎 VM 实例时遇到了问题,所以我有
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['compute', 'ssh',
'--project', '$PROJECT_ID',
'--zone', 'asia-southeast1-b',
'--strict-host-key-checking=no',
'username@instance-1',
'--command' ,'sh start.sh'
我的开始start.sh
#!/bin/sh
echo "Started: $(date --iso-8601=seconds)"
docker pull gcr.io/aaa/bbbc/cccc
echo "Finished: $(date --iso-8601=seconds)"
问题是How to set PATH when running a ssh command?
https://unix.stackexchange.com/questions/332532/how-to-set-path-when-running-a-ssh-command
所以我刚刚遇到了同样的问题,我试图将图像从 GCR 拉到 GCP 实例并想分享我的解决方案。
我运行gcloud auth configure-docker
并收到警告:
WARNING: `docker-credential-gcloud\` not in system PATH.
gcloud's Docker credential helper can be configured but it will not work until this is corrected.
我为此线程应用了可接受的答案并运行gcloud components install docker-credential-gcr
并得到一个长错误:
ERROR: (gcloud.components.install) You cannot perform this action because this Cloud SDK installation is managed by an external package manager.
Please consider using a separate installation of the Cloud SDK created through the default mechanism described at: https://cloud.google.com/sdk/
当没有解决方案起作用时,我卸载了 Google 提供的google-cloud-sdk
软件包,该软件包通过snap
安装并安装了发行版特定软件包管理器,对我来说,这是apt-get
如安装 Google Cloud SDK:安装选项页面中所述重新运行gcloud auth configure-docker
,这次它解决了我的问题。
在我的情况下,问题是由于WSL 1如何与Windows上的 Docker 一起工作。 起初我只在 WSL Ubuntu 中安装和初始化gcloud
,而不是在 Windows 中。 但是,由于 Docker 守护程序实际上是由 Windows 运行的,因此您还需要为 Windows 安装gcloud
(并且不要忘记在那里运行所有初始化和授权)。
我无法弄清楚谷歌在这里试图实现什么。 在 Linux 上有 docker-credential-gcloud,在 Windows 上有 docker-credential-gcr.exe,然后有调用 gcloud auth docker-helper 的 docker-credential-gcloud.cmd。 如果您尝试编写可移植的构建脚本或 gradle 规则,这将是一场噩梦,因为当您执行 docker-credential-gcloud 时,并非所有东西似乎都能找到和调用 docker-credential-gcloud.cmd ......它可能从dos 提示,但一般情况下不起作用。
经过大量的 .bat 脚本、cygwin 脚本、.cmd 脚本等等之后,我发现最好的解决方案是进入 gcloud 安装并复制 docker-credential-gcr.exe docker-credential-gcloud.exe ...不是一个非常令人满意的解决方案,但这是我发现的唯一可以解决问题的方法。
在 Windows 10/11,您需要确保将C:\Users\USERNAME\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin\
添加到您的系统$PATH
环境变量中。 如果谷歌云 SDK在安装 GCloud 时无法添加,则可能未添加。 所以像这样手动添加它:
"environment"
➔ 并点击"Edit the System Environment Variables"
(确保你有管理员权限)System Variables
➔ 单击Path
➔编辑... ➔新建➔ 粘贴C:\Users\USERNAME\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin\
(将“USERNAME”替换为您的用户名)然后在Git Bash控制台上验证Windows:
AppData
文件夹是隐藏的,因此您可能需要先取消隐藏 AppData ,以查看其内容。echo $PATH
➔ 这应该打印一个长字符串,其中包含: :/c/Users/USERNAME/AppData/Local/Google/Cloud SDK/google-cloud-sdk/bin
where docker-credential-gcloud
➔ 这应该打印C:\Users\USERNAME\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin\docker-credential-gcloud.cmd
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.