镜像总从公网拉?群晖 Container Manager 自建私有镜像仓库

引言

容器用得多了,问题也跟着来:拉镜像要排队等公网仓库,几台机器各拉各的、版本还对不齐,内网环境更是连拉都拉不动。群晖 Container Manager 的「存储库」页面除了默认的 Docker Hub,还支持添加其他镜像仓库——官方帮助明确:可以使用 Docker 官方或第三方存储库映像来部署私人存储库服务器,只要下载的映像符合存储库 HTTP API 版本 1 或 2,就可以把自建仓库添加进列表。这篇按官方口径把存储库管理与私有仓库的落地路径讲清。

什么场景用它最值

一是内网分发:开发出的业务镜像推到 NAS 上的私有仓库,内网各环境从这里拉,不依赖外部网络。二是版本统一:多台机器共用同一仓库源,镜像版本口径一致,避免「我这能跑你不能跑」。三是带宽与速率治理:公网仓库的拉取限速与排队,用内网仓库一次性消化,发布节奏自己说了算。

操作步骤

  1. 先把「存储库」页面的职责看清楚。为什么:官方定位——在存储库中可以下载映像文件,Docker Hub 会是默认存储库,也可以使用其他存储库。这一页管的是「从哪里拉镜像」,与容器怎么跑、项目怎么编排是三件事,先把概念分层,后面不混。

  2. 用关键字搜索并下载镜像。为什么:官方操作——在搜索栏输入关键字按 Enter 搜索映像,从结果中选择镜像单击「下载」或直接双击。先在默认 Docker Hub 上把官方 registry 映像拉下来,它是下一步自建仓库的原材料。

  3. 用 registry 映像把私有仓库跑起来。为什么:官方明确支持用 Docker 官方或第三方存储库映像部署私人存储库服务器。在 Container Manager 的容器页用下载好的 registry 映像创建容器,按官方镜像的口径配置服务端口与存储位置(官方 registry 映像默认以 5000 端口对外提供服务、镜像数据存放在容器内 /var/lib/registry 路径——以官方镜像文档为准),把 /var/lib/registry 映射到 NAS 的共享文件夹,仓库数据就落盘在 NAS 上而不是容器里。容器一重启数据还在,这是自建仓库能长期服役的前提。

  4. 在存储库列表中「添加」自建仓库。为什么:官方操作——单击「设置」,在存储库列表中「添加」新存储库,填入名称与 URL。官方给的硬条件是:下载的映像需符合存储库 HTTP API 版本 1 或 2,才能作为存储库服务器添加。用官方 registry 映像部署的仓库天然满足该口径,添加即用。

  5. 内网自签证书场景勾选信任选项。为什么:官方在「编辑」存储库时提供两个开关——启用存储库镜像、允许存储库信任 SSL 自我签署证书。内网仓库常用自签证书走 HTTPS,不勾信任就会被证书校验拦下;而镜像开关是给拉取加速用的,与自建仓库是两个用途,别混着配。

  6. 管理列表时认清默认项的地位。为什么:官方注明——无法删除默认存储库(例如 Docker Hub),列表里其余条目可编辑、可删除。默认仓库是兜底来源,自建仓库是主力来源,编辑自建条目改 URL 或开关时先确认改的是哪一行。

  7. 从私有仓库拉镜像验证闭环。为什么:添加成功后回到存储库页,搜索栏就能搜到自建仓库里的镜像,选择「下载」走完与公网一致的流程。内网拉取的速度与稳定性,就是这套建设最直观的验收指标。

  8. 把仓库纳入日常治理。为什么:私有仓库的价值在长期——镜像版本统一收口在仓库里,环境重建、机器扩容都从同一来源拉取;同时定期清理仓库共享文件夹中不再使用的镜像层,避免存储空间被旧版本悄悄吃掉。仓库本身也要进备份清单,它已经是基础设施的一部分。

三条边界先知道

  • HTTP API 版本是硬门槛:官方要求映像符合存储库 HTTP API 版本 1 或 2 才可添加为存储库服务器,来路不明的仓库镜像先核口径。
  • 默认 Docker Hub 删不掉:它是兜底来源,只能围绕它做增删,不能取而代之。
  • 镜像源与自建仓库是两回事:镜像开关解决「从哪里拉得快」,自建仓库解决「自己的镜像放哪里」,混用概念会把架构配乱。

结语

容器化到一定规模,镜像分发就该从「各拉各的」收口到「统一的仓库」。用官方 registry 映像把私有仓库跑在 NAS 上、加进存储库列表、内网直接拉取,一条链路把版本口径与网络依赖都管起来。贵州诚鑫致达科技在容器化改造项目中,以自建私有镜像仓库统一分发业务镜像,让多环境的版本一致性有源头保障。