直接在内网部署Docker Registry官方镜像仓库即可实现集中存储与跨节点分发,关键需满足服务稳定、数据持久、网络可达、客户端可信四点:挂载本地目录(如/data/registry)确保持久化;Client须能curl -I http://server-ip:5000/v2/通达;各Client的/etc/docker/daemon.json中配置"insecure-registries":["server-ip:5000"]并重启docker daemon;最后通过docker tag→push→pull完成全链路验证。

直接在内网部署 Docker Registry 官方镜像仓库,就能实现镜像的集中存储与跨节点分发,无需外网依赖,安全又高效。关键在于服务稳定、数据持久、网络可达、客户端可信——四点缺一不可。
服务部署与持久化存储
Registry 容器不能只跑在内存里,否则重启就丢数据。必须挂载本地目录做持久化:
- 创建存储目录:
mkdir -p /data/registry - 启动带持久化的 Registry:
docker run -d \-p 5000:5000 \--restart=always \--name registry \-v /data/registry:/var/lib/registry \registry:2 - 确认目录权限正确(建议用
chown -R 1001:1001 /data/registry,因 registry 官方镜像默认以 UID 1001 运行)
内网网络与防火墙配置
所有 Client 节点必须能通过 HTTP 直连 Server 的 5000 端口。不是“能 ping 通”就够了,要验证端口连通性:
- 在 Client 上执行:
curl -I http://<strong>server-ip</strong>:5000/v2/(返回200 OK即通) - 关闭或放行防火墙规则:
CentOS:firewall-cmd --add-port=5000/tcp --permanent && firewall-cmd --reload
Ubuntu:ufw allow 5000 - 若 Server 使用主机名(如
registry.internal),需在所有 Client 的/etc/hosts中静态解析,避免 DNS 单点故障
客户端信任配置(关键步骤)
Docker 默认只信任 HTTPS 仓库。内网 HTTP 仓库必须显式声明为“不安全源”,否则 push/pull 全部拒绝:
- 编辑 Client 节点的
/etc/docker/daemon.json(若不存在则新建):{"insecure-registries": ["<strong>server-ip</strong>:5000"]} - 重启 Docker Daemon:
systemctl restart docker - 验证生效:
docker info | grep -A 1 "Insecure Registries"应显示你配置的地址
镜像推送与跨节点拉取流程
完成基础配置后,标准操作链路清晰明确:
-
打标:在 Server 或构建机上运行
docker tag nginx:alpine <strong>server-ip</strong>:5000/my-nginx:1.0 -
推送:
docker push <strong>server-ip</strong>:5000/my-nginx:1.0 -
拉取:在任意 Client 上执行
docker pull <strong>server-ip</strong>:5000/my-nginx:1.0 - 验证:拉取后运行容器并检查日志或端口响应,确认镜像内容与行为一致
整个架构不依赖证书、不引入额外组件,纯 Registry 官方镜像 + 内网网络策略 + 客户端信任配置,即可稳定支撑数十节点规模的镜像分发。生产环境如需认证或 HTTPS,再叠加 Nginx 反向代理或 Harbor 即可平滑升级。


















