docker-credential-desktop 未安装或在 PATH 中不可用

Posted

技术标签:

【中文标题】docker-credential-desktop 未安装或在 PATH 中不可用【英文标题】:docker-credential-desktop not installed or not available in PATH 【发布时间】:2021-08-11 00:29:30 【问题描述】:

我的 Mac 上的 Docker 安装可能有点混乱。 起初我安装了 Docker 桌面,但后来运行它,我了解到,由于我使用的是旧 Mac,所以我必须安装 VirtualBox,所以我按照以下步骤操作:

    为用户启用在/usr/local/bin 文件夹上的写入

    sudo chown -R $(whoami) /usr/local/bin

    安装 Docker 机器

base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine

    从开发帐户手动安装 Xcode CLI..

    安装 Home Brew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    安装 Docker + wget(使用 Brew)

    brew install docker

    brew install wget

    安装 bash 完成脚本

base=https://raw.githubusercontent.com/docker/machine/v0.16.0
for i in docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash
do
    sudo wget "$base/contrib/completion/bash/$i" -P /etc/bash_completion.d
done

    启用 docker-machine shell 提示符

    echo 'PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '' >> ~/.bashrc

    安装 VirtualBox、ExtensionPack 和 SDK:https://www.virtualbox.org/wiki/Downloads

我现在使用 home-brew 安装了 docker-compose(docker-compose 版本 1.29.2,构建未知),但是在运行 docker-compose up 时出现以下错误:

docker.credentials.errors.InitializationError: docker-credential-desktop not installed or not available in PATH

which docker 打印 /usr/local/bin/docker。

Brew 安装在 /usr/local/Cellar/docker/20.10.6/usr/local/Cellar/docker-compose/1.29.2 中。 正如我所见,还有一个 docker-machine 的 home-brew 我应该通过 home-brew 安装 docker-machine 吗?

我可以检查什么以确保我使用 home-brew 中的 docker 安装并擦除/更正通过上述步骤进行的安装?

【问题讨论】:

你能试试this solution吗? @NickODell 我尝试过但没有用.. 但我发现了问题所在。谢谢 您的意思是ln -s "/Applications/Docker.app/Contents//Resources/bin/docker-credential-desktop" "/usr/local/bin/docker-credential-desktop" 命令?我没有运行该应用程序。它之前的帖子实际上说正确的 credStore 值取决于 Docker 版本。在我的情况下是Docker version 20.10.6, build 370c289 【参考方案1】:

检查您的 config.json 并将“credsStore”替换为“credStore”


  "stackOrchestrator" : "swarm",
  "experimental" : "disabled",
  "credStore" : "desktop"


【讨论】:

是的,这确实是我已经发现并在我的答案中发布的问题,但感谢您的回答。干杯。 ~/.docker/config.json 准确地说是文件路径 这个解决方案在 macOS Catalina 上对我来说效果很好。【参考方案2】:

只需在 ~/.docker/config.json 中将 credsStore 更改为 credStore

【讨论】:

Ivan 如果您检查我自己的答案(已接受的答案),您会发现它也适用于 credsStore .. 问题在于价值.. 关键 这解决了我的问题,谢谢!【参考方案3】:

经过长时间的谷歌搜索,我发现问题出在config.json 文件上。 "credsStore" : "docker-credential-desktop" 是错误的:


  "credsStore" : "docker-credential-desktop",
  "stackOrchestrator" : "swarm",
  "experimental" : "disabled"
 

"credsDstore" 键值更改为 "desktop",现在 compose 可以按预期工作。有人指出credsDstore 错字是问题所在,并用credDstore 修复了它,但在我的情况下,值是问题所在,它适用于"credsStore" : "desktop""credStore" : "desktop"

希望它能帮助其他人开始使用 Docker。 干杯。

【讨论】:

我正在寻找config.json 的位置。就我而言,它是~/.docker/config.json。一般文档:docs.docker.com/engine/reference/commandline/cli/…【参考方案4】:

在尝试本地调用 aws lambda 函数时,我在 Windows 10 上使用 wsl2 时遇到了类似问题。我在运行sam build --use-container 时得到docker.credentials.errors.InitializationError: docker-credential-desktop not installed or not available in PATH。运行which docker-credential-desktop 没有结果

经过进一步检查,我发现docker-credential-desktop.exePATH 中。在快速谷歌之后,似乎在 Docker Desktop 中为 Windows 10 符号链接 wsl/docker-desktop/cli-tools/usr/bin/docker-credentials-desktop.exe/usr/bin/docker-credential-desktop.exe 启用了 wsl2 后端。为了解决这个问题,我只是删除了符号链接并创建了一个没有.exe的新链接

检查链接并将其删除:

user@device:~$ ls -l /usr/bin/docker-credential-desktop.exe
lrwxrwxrwx 1 root root 67 Jan  5 23:15 /usr/bin/docker-credential-desktop.exe -> /wsl/docker-desktop/cli-tools/usr/bin/docker-credential-desktop.exe
user@device:~$ sudo rm /usr/bin/docker-credential-desktop.exe

要创建一个没有.exe 的新文件并检查它是否有效:

user@device:~$ sudo ln -s /wsl/docker-desktop/cli-tools/usr/bin/docker-credential-desktop.exe /usr/bin/docker-credential-desktop
user@device:~$ ls -l /usr/bin/docker-credential-desktop
lrwxrwxrwx 1 root root 67 Jan 12 14:22 /usr/bin/docker-credential-desktop -> /wsl/docker-desktop/cli-tools/usr/bin/docker-credential-desktop.exe

之后,我使用 .bashrc 更新 PATH 并解决了问题。我用which docker-credential-desktop 验证了这一点,现在它显示了上面符号链接中指定的位置。

【讨论】:

以上是关于docker-credential-desktop 未安装或在 PATH 中不可用的主要内容,如果未能解决你的问题,请参考以下文章

json数据和json数组格式数据的区别

JSON相关 JSON在线解析 JSON压缩转义工具 JSON着色工具 JSON 在线格式化工具 在线XML/JSON互相转换工具 XMLJSON在线转换

python中json文件处理涉及的四个函数json.dumps()和json.loads()json.dump()和json.load()的区分

python中json文件处理涉及的四个函数json.dumps()和json.loads()json.dump()和json.load()的区分

Python中json文件处理的四个函数json.dumps()json.loads()json.dump()和json.load()的区分

前端js把json字符串转json对象 java对象转json对象命令