Docker私有镜像仓库搭建registry

如果你在局域网里反复从 Docker Hub 拉镜像,速度慢不说,还可能遇到限流。
自己搭建一套 docker registry 私有镜像仓库,再把客户端地址填进 insecure-registries,就能实现内网镜像加速和统一管理。
本文面向零基础用户,按步骤操作即可完成部署并验证推拉镜像。

先把环境和地址准备好

准备一台 Linux 服务器,建议内存不低于 1GB,磁盘预留足够空间存放镜像。
先确认 Docker 已安装,没有装的话执行:

curl -fsSL https://get.docker.com | bash
systemctl enable --now docker

记录这台服务器的内网 IP 和开放端口,本文使用 192.168.1.105000 端口作为私有仓库入口。
若服务器有防火墙,记得放行 5000 端口:

firewall-cmd --permanent --add-port=5000/tcp && firewall-cmd --reload

启动 registry 容器并开放访问

Docker Registry 官方镜像就是 registry:2,直接运行一个容器即可:

docker run -d \
  --name registry \
  --restart=always \
  -p 5000:5000 \
  -v /data/registry:/var/lib/registry \
  registry:2

这里把容器数据目录挂载到宿主机 /data/registry,容器删除后镜像数据也不会丢。
运行后可以用 docker ps 确认容器状态是 Up。

默认情况下 registry 走 HTTPS 加密传输,但内网常用 HTTP 访问。
为了让 Docker 认账,需要修改每个使用该仓库的客户端配置 /etc/docker/daemon.json,加入 insecure-registries:

{
  "insecure-registries": ["192.168.1.10:5000"]
}

改完执行 systemctl restart docker 重启 Docker,然后试着登录:

docker login 192.168.1.10:5000

没配置账号时默认匿名登录,提示 Login Succeeded 就说明仓库连通了。

配置内网镜像加速的核心参数

私有仓库搭好后,想让所有客户端从内网拉公共镜像更快,可以在同一份 daemon.json 里加上 registry-mirrors,指向官方 registry 的加速地址。
不过要注意:registry-mirrors 只影响 Docker Hub 官方镜像的拉取,不影响私有仓库的地址识别。

如果你有自己的加速器或云厂商提供的镜像源,可以这样写:

{
  "registry-mirrors": ["https://docker.mirrors.example.com"],
  "insecure-registries": ["192.168.1.10:5000"]
}

保存后重启 Docker,再用 docker info 查看 Registry Mirrors 一栏,确认配置已经生效。
对于内网环境,私有仓库本身就是一个天然加速源:客户端只需先从外网拉一次镜像,再 push 到私有 registry,之后其他机器直接从内网 pull,速度能提升数倍。

推送和拉取镜像验证流程

先把本地镜像打上私有仓库的标签:

docker tag nginx:latest 192.168.1.10:5000/nginx:latest

然后推送:

docker push 192.168.1.10:5000/nginx:latest

推送成功后,在另一台内网机器上直接拉取:

docker pull 192.168.1.10:5000/nginx:latest

拉取时间明显缩短,说明内网镜像加速生效。
也可以通过 API 查看仓库里的镜像列表:

curl http://192.168.1.10:5000/v2/_catalog

返回 {"repositories":["nginx"]} 即表示数据正常。

常见报错和避坑说明

报错 http:
server gave HTTP response to HTTPS client

原因是客户端没配置 insecure-registries,
检查 daemon.json 是否写对 IP 和端口,
并确认重启了 Docker。

push 时报 denied: requested access to the resource is denied:多半是仓库没有开启匿名推送,或使用了带认证的 registry。
生产环境建议给 registry 加上密码认证,可以用 htpasswd 生成账号并挂载到容器里。

注意磁盘占用:registry 容器持续运行后,镜像数据会不断增长。
建议定期执行 docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml 清理无用层,同时挂载目录做好备份。

还有一点容易被忽略:如果客户端 Docker 版本过低,可能不认 insecure-registries 里的 CIDR 写法,尽量写具体 IP。
所有配置修改后必须重启 Docker,否则不生效。

完成以上步骤后,你的内网已经有一台能用的私有镜像仓库。
后续给 registry 加 TLS 证书或者接入认证时,再从本文基础上扩展即可。
如果实际操作中遇到其他报错,先检查防火墙、宿主机挂载目录权限和 Docker 版本,多数问题都出在这三处。

分享到:
上一篇
KVM虚拟机密码重置,不用登录虚拟机修改root密码
下一篇
Nginx防盗链配置,防止API接口被恶意盗刷流量
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意