为什么需要设置仓库?
Understanding Repository Configuration
网络访问困境
原生 Docker Hub 在国内无法直接访问。 通过配置镜像源,可以让系统正常检查容器更新,无需依赖代理即可获取最新版本信息。
为什么能拉取却不能检查更新?
镜像拉取和版本检查是两个不同的功能:
- 镜像拉取:通过 Docker Registry API 的 Blob 接口下载镜像层文件
- 版本检查:需要调用 Manifest API 查询镜像的 Digest 值来对比版本
许多镜像源为了节省带宽和成本,只开放了 Blob 下载接口(支持拉取),但关闭了 Manifest 查询接口(不支持版本检查)。 这就是为什么有些镜像源能拉取镜像,却无法用于检查更新的原因。
为什么推荐自建服务?
公共镜像源存在以下问题:
- 接口限制:大部分镜像源虽然支持拉取,但没有开放 API 接口调用
- 稳定性差:类似 docker.1ms.run 虽然支持调用,但服务不稳定且有收费趋势
- 随时失效:公共服务可能因政策或成本原因随时关闭
自建检测服务是最稳定的解决方案:完全掌控、永不失效、比代理更稳定! 只需一台能访问 Docker Hub 的 VPS,即可为自己和团队提供持久稳定的更新检测服务。
💡 建议:优先使用自建服务 > 公共服务 > 代理访问
📑 目录
1. 自建镜像代理服务
• 一台能访问Docker Hub的VPS服务器
• 已安装Docker和Docker Compose
• 服务器防火墙已开放2022端口
快速部署
或使用 Docker Compose
部署完成后,在 Diancup 的仓库设置中添加你的代理地址:
输入地址时不要包含 http:// 或 https:// 前缀,只需输入域名和端口即可。
Diancup 会自动使用你配置的地址进行镜像检查和拉取,新添加的地址会被优先使用。
2. 配置说明
环境变量
| 变量名 | 说明 | 默认值 | 必需 |
|---|---|---|---|
| HOST_KEY | 启动密钥,必须设置为 yjnas | 无 | ✅ 是 |
| PORT | 容器内部监听端口 | 8080 | ❌ 否 |
| IMAGES_PULL | 是否允许镜像拉取(true/false) | false | ❌ 否 |
工作模式对比
| 功能 | IMAGES_PULL=false | IMAGES_PULL=true |
|---|---|---|
| Digest查询 | ✅ 支持 | ✅ 支持 |
| Manifest获取 | ✅ 支持 | ✅ 支持 |
| Blob下载 | ❌ 禁止 | ✅ 允许 |
| 镜像拉取 | ❌ 禁止 | ✅ 允许 |
| 适用场景 | 仅检测更新 | 完整镜像代理 |
3. 常见问题
Q1: 为什么添加的地址无法使用?
A: 请检查:
- 地址格式是否正确(不要包含 http:// 或 https://)
- 服务器是否可以访问该地址
- 使用 curl 命令测试地址是否可用
Q2: 配置后多久生效?
A: 配置保存后立即生效,无需重启容器。
Q3: 可以添加多少个地址?
A: 没有数量限制,但建议:
- 检查地址:2-5 个
- 镜像代理:3-10 个
- 标签地址:使用默认配置即可
Q4: 如何调整地址优先级?
A: 点击"列表"按钮,在弹出窗口中拖动调整顺序。排在前面的地址优先级更高。
Q5: 删除配置后会怎样?
A: 删除后该地址将不再被使用。如果删除了所有地址,相关功能可能无法正常工作。