在对gcloud和docker进行最新更新后,我无法访问google容器存储库中的图片。当我在更新gcloud后根据说明运行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 credential helpers already registered correctly.
正在运行which docker-credential-gcloud
会返回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
。
答案 0 :(得分:34)
注意:以下所有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
它应该成功。
答案 1 :(得分:16)
在Windows上也遇到了相同的问题,该Docker在Linux容器和Docker引擎v19.03.8上运行Docker。使用docker compose我没有将gcloud用于我的dockerfiles ...
DT1001 dockerpycreds.errors.InitializationError: docker-credential-gcloud未安装或PATH中不可用
选项1:编辑docker配置文件,并从其中删除所有gcloud
条目。
Windows c:/Users/<your account>/.docker/config.json
Linux和MacOS ~/.docker/config.json
选项2:转到故障排除->重置为出厂默认值。
此后,我的docker compose正在创建容器并运行图像而没有任何问题。
答案 2 :(得分:2)
从未找到直接解决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
答案 3 :(得分:1)
通常,此错误表明您的$PATH
变量已被您最近安装的程序包或程序所破坏,因此找不到Google Cloud SDK。
$PATH
被许多程序在安装时通过更改~/.profile
,~/.bash_profile
或~/.bashrc
或它们的非bash等效项进行更改。如果$PATH
错误,则docker
中配置了Google Cloud SDK,但无法将其视为可执行文件,因此会出现此错误。假设您过去曾经使用过Google Cloud SDK,但是如果gcloud
与您的docker配置在一起,那么您可能已经使用过。不要重新安装gcloud或禁用它,因为您已经在系统上安装了它,这很好。
然后解决方案是修复您的 $PATH
,而不安装任何东西。
echo $PATH
这应该是一个很长的:
分隔文件目录列表。您在字符串中看到google-cloud-sdk/bin
吗?考虑到您在这台计算机上生活中遇到的所有麻烦,字符串方式是否太短?您使用NVM,但缺少它吗?使用自制软件,但它丢失了吗?从命令行尝试brew
,行得通吗?
如果以上任何一个答案为“否”,请检查上面的文件,以查看每个文件的底部是否有任何新条目可能已损坏的内容。您刚刚安装了新东西吗?
某事正在破坏您的$PATH
,您需要弄清楚那是什么。对我来说,通常是通过conda init
命令来使用Anaconda Python。对您来说,它可能是nvm
或其他名称。找出问题所在并解决问题。不要重新使用新的$PATH
并重新安装相同的内容或禁用gcloud
身份验证。
答案 4 :(得分:0)
它似乎与Homebrew Cask有关。我卸载了这个桶,然后手动重新安装了Google Cloud SDK downloading the tar ball并运行了那里描述的打包安装脚本。
现在RemoveCallback
在我的路上:
docker-credential-gcloud
答案 5 :(得分:0)
当我尝试从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
答案 6 :(得分:0)
新版的google-cloud-sdk仅具有docker-credential-gcr
,而不再具有docker-credential-gcloud
。另一方面,我的一个python软件包始终要求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
现在应该打印:
...
docker-credential-gcloud -> /path/to/google-cloud-sdk/bin/docker-credential-gcr
...
答案 7 :(得分:0)
因此,当我尝试将映像从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
Installing Google Cloud SDK: Installation options页并重新运行gcloud auth configure-docker
,这次它解决了我的问题。
答案 8 :(得分:0)
在我的情况下,问题是由于 WSL 1 如何与 Windows 上的Docker一起使用。最初,我仅在WSL Ubuntu(而不是Windows)中安装并初始化gcloud
。但是,由于Docker守护进程实际上是由Windows运行的,因此您也需要为Windows安装gcloud
(并且不要忘记在那里运行所有的初始化和授权)。
答案 9 :(得分:0)
安装gcloud和docker-credential-gcr, 遵循此 tutorial
$ ln -s /usr/local/google-cloud-sdk/bin/docker-credential-gcr /usr/local/bin/docker-credential-gcloud
$ rm -rf ~/.docker
$ docker-compose build --pull
完成!