exec: "docker-credential-desktop.exe": 在$PATH中找不到可执行文件

80
我在执行docker build过程中遇到了这个错误。
 => ERROR [internal] load metadata for docker.io/library/ubuntu:18.04                                                                                                                                                                   2.1s
------
 > [internal] load metadata for docker.io/library/ubuntu:18.04:
------
failed to solve with frontend dockerfile.v0: failed to create LLB definition: rpc error: code = Unknown desc = error getting credentials - err: exec: "docker-credential-desktop.exe": executable file not found in $PATH, out: ``
Makefile:26: recipe for target 'build-local' failed
make: *** [build-local] Error 1
8个回答

306

1
没有明确的答案说明为什么这个方法可行,也没有更好的解决方案。这个方法看起来像是一个hack。 - bir singh
1
更像是一个修复。 - Mikser
24
这与直接删除行没有什么不同。Docker正在寻找 credsStore 而不是 credStore,因为它找不到,所以使用默认值--这里没有任何魔法。 - Javier Buzzi
2
已确认修复该问题。 - Rikki
3
@JavierBuzzi 是正确的 - 文档在这里 https://docs.docker.com/engine/reference/commandline/login/#credentials-store - BitByteDog
显示剩余8条评论

65
  1. 打开配置文件 sudo vi ~/.docker/config.json
  2. credsStore改名为credStore并保存。 这样做可以修复我的问题(在arch系统上)。

18

对我来说,这是在我的组织不得不从Docker桌面转换到Colima时发生的,因此这里有来自Colima所有者的详细信息: https://github.com/abiosoft/colima/issues/52#issuecomment-956037291

───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: ~/.docker/config.json
───────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ {
   2   │     "credsStore": "desktop"
   3   │ }
───────┴─────────────────────────────────────────────────────────────────

你可以删除那一行,这样它就能正常工作了。


9

简短回答:从 ~/.docker/config.json 中删除包含 credsStore 的行。

详细解释:

credsStore 属性指定一个外部二进制文件作为默认凭证存储。当设置该属性时,docker login 将尝试将凭证存储在由 docker-credential-<value> 指定的二进制文件中,该文件位于 $PATH 中可见。如果没有设置这个属性,凭证将被存储在配置文件的 auths 属性中。

更多信息请阅读 https://docs.docker.com/engine/reference/commandline/cli/#credential-store-options

感谢 @Javier Buzzi 提供的帮助,请投票支持他的评论。


5

今天我安装并卸载了Docker桌面版,导致Docker引擎出现问题,正确的解决方法已经给出:

从~/.docker/config.json文件中删除带有credsStore的那一行。


5
对于Arch Linux,编辑~/.docker/config.json文件并粘贴以下代码。
{
    "auths": {},
    "credStore": "desktop",
    "currentContext": "default"
}



基本上将credsStore更改为credStore

2
我在Mac上修复了这个问题:
sudo vim ~/.docker/config.json
将"credsStore"改名为"credStore"

1
在我的情况下,因为我只运行了docker-engine,所以找不到这个文件docker-credential-desktop
要获取此文件,我必须安装docker桌面用户界面应用程序,并从docker桌面登录到我的docker hub帐户。这就是对我有效的方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接