issue: Docker example doesn’t work

该报错通常不是镜像不存在或需要登录,而是 Docker 客户端正在向 ghcr.io 发送过期的凭据,导致匿名拉取被拒绝。优先执行 docker logout ghcr.io 后重新拉取镜像。

快速结论:该报错通常不是镜像不存在或需要登录,而是 Docker 客户端正在向 ghcr.io 发送过期的凭据,导致匿名拉取被拒绝。优先执行 docker logout ghcr.io 后重新拉取镜像。

适用环境:macOS,Open WebUI main 分支,Docker 安装方式,镜像 ghcr.io/open-webui/open-webui:main

最快修复方案:在终端执行 docker logout ghcr.io,然后重新运行 docker pull ghcr.io/open-webui/open-webui:main。该方案已在 Issue 中得到验证。

注意事项:docker logout ghcr.io 会清除本地存储的 ghcr.io 凭据,后续如需推送镜像到 ghcr.io 需重新登录。若此方法无效,需检查 ~/.docker/config.json 中是否配置了 credsStoreregistry-mirror 拦截拉取请求。

问题场景

用户从 Open WebUI 官网复制 Docker 启动示例(Docker tab),在 macOS 终端执行 docker run ghcr.io/open-webui/open-webui:main 时报错。用户最初贴出的是 docker pull ghcr.io/open-webui 命令(缺少镜像名称),随后更正为官网的完整命令,报错依旧。

报错原文

docker pull ghcr.io/open-webui/open-webui:main
Error response from daemon: error from registry: denied

原因分析

可能原因:Docker 客户端在拉取 ghcr.io 镜像时发送了本地存储的过期或已撤销的凭据。ghcr.io 对不存在的仓库返回 denied 而不是 not found,但本项目维护者在无凭据状态下已验证 ghcr.io/open-webui/open-webui:main 可以匿名拉取。因此,若完整命令仍报 denied,说明 Docker 向注册表发送了凭据而非匿名请求——过期的 ghcr.io token 会被拒绝,而没有 token 时反而可以匿名读取。

环境排查

  • 确认本地 Docker 版本(macOS 上建议 Docker Desktop 最新版)。
  • 检查是否已登录 ghcr.io:docker infocat ~/.docker/config.json 查看 auths 字段。
  • 确认 ~/.docker/config.json 中是否设置了 credsStoreregistry-mirror 指向 ghcr.io。
  • 确认拉取的是完整镜像引用 ghcr.io/open-webui/open-webui:main,不要遗漏镜像名称。

解决步骤

  1. 退出 ghcr.io 登录状态:docker logout ghcr.io
  2. 重新拉取镜像:docker pull ghcr.io/open-webui/open-webui:main
  3. 若仍失败,检查 ~/.docker/config.json 中是否有 ghcr.io 条目、credsStoreregistry-mirror 配置干扰拉取,可临时备份该文件后移除相关配置再重试。
  4. 若问题依旧,请贴出完整报错输出以供进一步排查。

验证方法

执行 docker pull ghcr.io/open-webui/open-webui:main 后能正常拉取镜像,无 denied 报错。随后可继续按官网示例运行 docker run 启动 Open WebUI,容器正常启动即表示问题解决。

参考来源

open-webui/open-webui #28537

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18287

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注