Docker 构建镜像报错: error getting credentials - err: exit status 1, out: ``
Abstract
我就说 GPT 不靠谱吧, 最后还是得靠人力解决
执行 docker compose up --build
的时候遇到以下问题:
[+] Building 0.3s (2/3) docker:desktop-linux
[+] Building 2.1s (2/3) docker:desktop-linux
[+] Building 11.1s (3/3) FINISHED docker:desktop-linux
=> [browser-use-webui internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 2.04kB 0.0s
=> [browser-use-webui internal] load .dockerignore 0.0s
=> => transferring context: 48B 0.0s
=> ERROR [browser-use-webui internal] load metadata for docker.io/library/python:3.11-slim 11.0s
------
> [browser-use-webui internal] load metadata for docker.io/library/python:3.11-slim:
------
一开始使用 Wrap 进行排查, 提示我可能是网络问题, 我猜想最近的源可能又崩了, 于是找了个新的源放到 ~/.docker/daemon.json
前一次设置源重启服务后, 通过 docker info
查看了 Registry 地址. 这次 GPT 提示直接用 docker info | grep 'Registry'
来查看当前的 Registry, 我就直接执行了, 但是我发现这个命令并没有输出任何东西.
docker info | grep "Registry Mirrors"
WARNING: daemon is not using the default seccomp profile
Registry Mirrors:
当然没有输出任何东西啊,
Registry Mirrors:
后面带了个冒号, 显然新配置的源在后面几行啊! (AI 就是傻子)
实际上配置成功:
docker info | grep "Registry Mirrors" -A 5
WARNING: daemon is not using the default seccomp profile
Registry Mirrors:
https://docker.1ms.run/
https://docker.xuanyuan.me/
Live Restore Enabled: false
但是没有用, 因为一开始就被 AI 误导了, 我还在找如何在 Mac 上面进行 systemctl
的方法, 其实单纯是 Auth 的问题, Docker 源运转正常.
手动搜索找到 这一篇:
MacOS - I just had to change the docker config file.
The "credsStore"was "desktop"and changed it to "osxkeychain".
used nano to do it. sudo nano ~/.docker/config.json
修改后直接生效
Docker 在访问私有镜像仓库凭据时, 会使用指定的凭据存储程序 (credential helper) , 比如:
- "desktop": 指的是 Docker Desktop 的内置凭据管理器;
- "osxkeychain": 指的是 macOS 自带的 Keychain 系统;
- 其他还有比如 "pass", "secretservice" 等, 视平台而定.
将凭据存储程序改成 "osxkeychain" 后, Docker 会改用 docker-credential-osxkeychain
. 这是 Docker 在 macOS 上推荐使用的默认 helper, 通常在安装 Docker Desktop 时就会一并安装. 由于该 helper 能够正确与 macOS 的 Keychain 系统集成, 因此不会再出现相关报错.
对比项 | docker-credential-osxkeychain | docker-credential-desktop |
📦 安装来源 | 随 Docker CLI 一起安装 (或手动安装) | 随 Docker Desktop GUI 一起安装 |
🧠 依赖组件 | macOS Keychain (系统级) | Docker Desktop GUI 组件 |
📍 凭据存储位置 | macOS 系统钥匙串 (Keychain Access) | Docker Desktop 的本地存储 (非系统 Keychain) |
🖥️ GUI 依赖 | ❌ 无需 Docker Desktop | ✅ 依赖 Docker Desktop |
🛠️ CLI 兼容性 | ✅ 非图形界面可用, 适用于 SSH, Headless 环境 | ❌ CLI-only 环境常出错 |
🔒 安全性 | ✅ 高, 原生系统加密保护 | ✅ 也高, 但依赖 Docker Desktop 本身的机制 |
🔁 可移植性 | ✅ 跨 CLI 和 GUI 通用 | ❌ 只能在 GUI 环境下工作 |
🧪 稳定性 | ✅ 稳定, 官方推荐 | ❌ 较多报错, 尤其在 CLI-only 场景 |
🛠️ 手动配置方便性 | ✅ 支持 CLI 轻松查看和更改 Keychain | ❌ 几乎无文档, Debug 不便 |
- 使用 osxkeychain:
- 你主要用 Terminal;
- 或远程连接 (如 SSH) ;
- 或不依赖 Docker Desktop 图形界面;
- 想使用系统 Keychain 管理凭据.
- 使用 desktop:
- 你完全通过 Docker Desktop 管理镜像和登录;
- 不介意它依赖图形界面和 GUI 的凭据系统.
如果你希望 Docker 在任何终端环境下都稳定工作, 建议优先使用 osxkeychain
我就说 GPT 不靠谱吧, 浪费我俩小时
关于本文
文章标题 | Docker 构建镜像报错: error getting credentials - err: exit status 1, out: `` |
发布日期 | 2025-04-30 |
文章分类 | Tech |
相关标签 | #Docker #Troubleshooting #Error |