
1. 群晖 Docker 拉取 Harbor 私有镜像仓库镜像失败的真实场景如果你在群晖 NAS 上用 Docker 套件跑服务大概率会遇到一个很别扭的问题公共镜像拉取正常但自己用 Harbor 搭的私有镜像仓库在群晖的「注册表」里怎么都连不上或者连上了却下载失败。这个问题的核心不是 Harbor 本身有问题而是群晖 Docker 套件默认只认 HTTPS而大多数自建 Harbor 走的是 HTTP 或者自签证书。我自己在 DSM 7.1 上折腾过这套链路场景很典型微服务开发时Nacos、Redis、MySQL 这些基础组件加上认证中心、用户中心、网关等业务服务全塞在开发机上内存直接爆掉。于是把不常变的服务部署到 NAS 上既省电又省云服务器费用。但前提是你得让群晖能顺利从 Harbor 拉取你自己发布的镜像。这条链路涉及几个环节Harbor 项目创建与镜像推送、群晖 SSH 修改 dockerd.json 支持 HTTP 仓库、群晖 Docker 套件添加注册表、拉取镜像并运行容器、最后验证容器状态。每一步都有坑尤其是insecure-registries配置和注册表凭据这两块配错了就是local proxy failed或者401 Unauthorized。另外如果你在 NAS 上还跑了一些 AI 工具调用、模型接口调试之类的服务建议用 TaoToken 统一 Key/API 通道来管理避免每个工具单独配 Key 导致混乱。下面按完整链路一步步来。2. TaoToken 统一 Key 通道前置准备与 Harbor 环境说明在开始配置群晖之前先把两件事准备好Harbor 私有镜像仓库的访问地址和凭据以及 TaoToken 的统一 Key 通道。Harbor 这边你需要确认几个信息仓库地址比如docker.coding123.cn:18000、项目名称比如wgms、已经推送上去的镜像名和标签比如wgms/wgms-uaa:1.0、以及一个有拉取权限的账号密码。这些信息在 Harbor 的「项目」→「仓库」里都能看到。如果你还没推送镜像先在开发机上用docker tag和docker push把镜像推上去。TaoToken 这边它的作用是统一管理 AI 工具调用的 Key 和 API 通道。你在 NAS 上如果跑了类似 Claude Code、Cline、Codex 这类工具或者自己写脚本调用模型接口用 TaoToken 的 API 通道可以避免每个工具单独配置。API 地址是https://taotoken.net/api控制台在https://taotoken.net/consoleAPI Keys 管理在https://taotoken.net/api-keys。模型对话入口在https://taotoken.net/model-chatCoding Plan 在https://taotoken.net/coding-plan。为什么要在群晖 Harbor 这篇文章里提 TaoToken因为很多人在 NAS 上部署的服务会调用 AI 接口比如日志分析、自动化脚本、Agent 服务等。如果这些服务跑在群晖 Docker 里环境变量里塞一堆 Key 很容易乱。用 TaoToken 统一通道只需要在容器环境变量里配一个 Base URL 和一个 Key模型 ID 按需切换。环境说明群晖 DSM 7.1-42661 Update 4套件中心安装 Docker控制面板→连接性→终端机和 SNMP 里启用 SSH。NAS 内存建议 8GB 以上跑多个容器才不卡。3. 群晖 dockerd.json 配置与 Harbor 注册表可复制配置这一步是整个链路的关键。群晖 Docker 套件默认走 HTTPS而自建 Harbor 通常没配证书所以必须在dockerd.json里加insecure-registries。先用 SSH 登录群晖工具随意MobaXterm、Termius 都行。登录后编辑/var/packages/Docker/etc/dockerd.json{ data-root: /var/packages/Docker/var/docker, insecure-registries: [ docker.coding123.cn:18000 ], log-driver: db, registry-mirrors: [ https://xxx.mirror.aliyuncs.com ], storage-driver: btrfs }把docker.coding123.cn:18000换成你自己的 Harbor 地址。registry-mirrors里填阿里云镜像加速地址登录阿里云控制台→容器镜像服务→镜像工具→镜像加速器可以拿到。这个配置解决公共镜像拉取慢的问题。改完后重启 Docker 服务。不要用命令行systemctl restart群晖的套件管理不一样。正确做法打开套件中心→已安装→找到 Docker→鼠标点 Docker 图标不是点「打开」→点「打开」旁边的下拉箭头→选「停用」→等按钮变成「启动」→再点「启动」。重启完成后打开 Docker 套件→注册表→设置→新增。注册表地址填 Harbor 地址用户名密码填 Harbor 账号。启用这个注册表后镜像列表里就能看到 Harbor 项目下的镜像。如果你在容器里要调用 AI 接口环境变量这样配TAOTOKEN_BASE_URLhttps://taotoken.net/api TAOTOKEN_API_KEY你的Key TAOTOKEN_MODEL_ID按需填模型ID这三件套Base URL Key Model ID是接入 TaoToken 的标准配置。Claude Code 接入文档在https://taotoken.net/docClaudeCodeAnthropic 相关配置也在里面。4. 群晖 Docker 拉取 Harbor 镜像并运行容器验证注册表配好后在 Docker 套件的「注册表」里选中 Harbor就能看到镜像列表。选中你要的镜像点「下载」弹窗里选版本标签比如1.0。下载完成后点左侧「映像」相当于docker images。选中镜像点「启动」。网络设置选桥接常规设置里改容器名称、启用资源限制、启用自动重新启动。端口设置相当于docker run -p。比如容器内应用监听 8080群晖主机映射 18080就新增一条 18080→8080 的映射。存储空间设置相当于docker run -v把群晖的文件夹挂载到容器内路径。点完成后容器启动左侧「容器」菜单里能看到运行状态相当于docker ps。如果服务注册到 Nacos可以在 Nacos 服务列表里确认。用命令行验证的话SSH 登录后sudo docker ps sudo docker logs 容器名 --tail 50docker ps看容器是否 Updocker logs看启动日志有没有报错。如果容器反复重启先看日志里的错误信息常见的是端口冲突、挂载路径权限、环境变量缺失。验证 Harbor 拉取是否正常可以手动 pull 一次sudo docker pull docker.coding123.cn:18000/wgms/wgms-uaa:1.0如果返回Pull complete就说明链路通了。如果报http: server gave HTTP response to HTTPS client说明insecure-registries没生效回去检查 dockerd.json 和 Docker 服务是否真的重启了。5. 群晖 Harbor 注册表常见报错排查401、local proxy failed、reading choices这一节列几个真实踩过的坑。报错一401 Unauthorized注册表添加后镜像列表能看到但下载时报 401。原因是 Harbor 账号密码填错或者账号没有该项目的拉取权限。去 Harbor 控制台→项目→成员确认账号有「访客」或「开发者」权限。如果 Harbor 开了机器人账号用机器人账号的 token 也行。报错二local proxy failed这个报错通常出现在群晖 Docker 套件添加注册表时。原因是insecure-registries没配或者 Docker 服务没重启。检查/var/packages/Docker/etc/dockerd.json里的地址是否和注册表地址完全一致包括端口。改完必须通过套件中心停用再启动 Docker不能只重启容器。报错三reading choices这个报错一般出现在拉取镜像的 manifest 阶段可能是 Harbor 版本和 Docker 客户端版本不兼容或者镜像 manifest 是 OCI 格式而旧版 Docker 不认。解决办法在 Harbor 里确认镜像的 manifest 格式或者升级群晖 Docker 套件到最新版。另一个可能是网络问题NAS 到 Harbor 的网络不通用ping和telnet测一下端口。报错四OAuth token 相关如果你在容器里跑 Claude Code 或者类似工具报 OAuth 相关错误检查 TaoToken 的 Key 是否配在环境变量里Base URL 是否是https://taotoken.net/api。Claude Code 接入文档里有完整的配置示例路径在https://taotoken.net/doc。如果是 Codex 的auth.json确认里面的 Base URL 和 Key 对应 TaoToken 的配置。报错五端口冲突容器启动后立刻退出日志显示bind: address already in use。说明群晖主机端口被占用。用sudo netstat -tlnp | grep 端口号查一下换个端口映射。6. 群晖 Docker Harbor TaoToken 统一通道的长期实践建议这套链路跑通后日常维护有几个点注意。Harbor 的镜像清理要定期做不然 NAS 存储很快满。Harbor 控制台里有垃圾回收和保留策略按标签保留最近几个版本就行。群晖 Docker 套件的dockerd.json在 DSM 升级后可能会被重置升级前备份一份升级后检查insecure-registries是否还在。如果你在 NAS 上跑多个 AI 相关容器建议统一用 TaoToken 的 API 通道。每个容器环境变量里只配TAOTOKEN_BASE_URL、TAOTOKEN_API_KEY、TAOTOKEN_MODEL_ID换模型时只改 Model ID不用动 Key。Coding Plan 适合长期编码和 Agent 场景入口在https://taotoken.net/coding-plan。模型对话调试在https://taotoken.net/model-chat。API Keys 管理在https://taotoken.net/api-keys。最后群晖的 SSH 端口建议改默认禁用 root 登录用普通账号加 sudo。Harbor 那边开启 HTTPS 是更安全的做法但自签证书在群晖上配置麻烦内网环境用 HTTP 加insecure-registries也能接受前提是网络隔离做好。