【解决】Docker Login 报错,登录凭据无法保存

【解决】Docker Login 报错,登录凭据无法保存

一、 问题预览

在尝试登录 GitHub 的 ghcr.io 镜像托管服务或其他私有仓库时,终端抛出如下错误,提示无法保存凭据:

Error saving credentials: error storing credentials - err: exec: "docker-credential-dev-containers-...": executable file not found in $PATH

即便你的用户名和 Token(或密码)完全正确,Docker 也会因为无法调用指定的“凭据存储辅助程序”而宣告登录失败。


二、 问题定位

报错信息中的 executable file not found in $PATH 明确指出 Docker 正在尝试调用一个名为 docker-credential-xxxx 的外部程序。

检查 Docker 的配置文件 ~/.docker/config.json,你会发现类似如下的配置:

{
  "auths": {
    "ghcr.io": { "auth": "xxxxxxxxxx" }
  },
  "credsStore": "dev-containers-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}

核心原因:

字段 credsStore 指定了 Docker 必须使用某个特定的凭据管理器来加解密你的登录信息。

  • 如果你曾经使用过 VS Code Dev ContainersDocker Desktop,系统可能会自动修改此字段。

  • 当对应的辅助程序(Helper)被卸载或路径失效时,Docker 就无法完成登录后的“存盘”动作。


三、 解决办法

方法 1:手动清理(最快)

直接编辑 ~/.docker/config.json,将 credsStore 这一行直接删除

删除后的配置文件应类似于:

{
  "auths": {
    "ghcr.io": {
      "auth": "xxxxxxxxxx"
    }
  }
}

保存后,再次尝试执行 docker login,此时 Docker 会将凭据以 Base64 编码的形式直接保存在 config.json 中(虽然安全性略低,但兼容性最强)。

方法 2:安装通用的凭据管理器(进阶)

如果你在 Linux 环境下,希望依然使用加密存储,可以尝试安装 passsecretservice

sudo apt install docker-credential-helpers

并在 config.json 中将 credsStore 修改为 secretservice


四、 总结

当你遇到 Docker 登录报错且提及 docker-credential-xxxx 时, 99% 的情况都是 ~/.docker/config.json 中的 credsStore 配置过时或冗余导致的。直接删除该字段通常是恢复生产的最快手段。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容