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

docker-credential-desktop not installed or not available in PATH

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

  1. 允许用户在 /usr/local/bin 文件夹上写入

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

  2. 安装Docker-Machine

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
  1. 安装Xcode CLI..从开发帐户手动安装

  2. 安装 Home Brew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. 安装 Docker + wget(使用 Brew)

    brew install docker

    brew install wget

  2. 安装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
  1. 启用docker机器shell提示

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

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

我现在用自制软件安装了 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 也有自制软件,我应该通过自制软件安装 docker-machine 吗?

我可以检查什么来确保我使用 docker 自制软件安装和 wipe/correct 上述步骤安装?

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

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

"credsDstore" 键值更改为 "desktop" 并且现在可以按预期进行撰写。一些人指出 credsDstore 拼写错误是问题所在,并用 credDstore 修复了它,但在我的情况下,值是问题所在,它适用于 "credsStore" : "desktop""credStore" : "desktop"

希望它能帮助其他 Docker 入门的人。 干杯。

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

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

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

我 运行 在尝试本地调用 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 中。在快速 google 之后,似乎在 Docker 桌面中启用 wsl2 后端 Windows 10 symlinks wsl/docker-desktop/cli-tools/usr/bin/docker-credentials-desktop.exe/usr/bin/docker-credential-desktop.exe。为了解决这个问题,我简单地删除了 symlink 并创建了一个没有 .exe

的新符号

要检查 link 并将其删除:

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 验证了这一点,它现在显示在上面的 symlink 中指定的位置。