Docker私有仓库搭建内网加速
为什么你需要一个私有仓库来加速内网
如果你在团队或公司里使用 Docker,每次拉取镜像都从 Docker Hub 走,不仅慢还占用公网带宽。
尤其当多个机器同时拉取同一个镜像时,重复下载非常浪费。
搭建一个 Docker 私有仓库,把常用镜像缓存到内网,之后所有机器从内部拉取,速度直接提升数十倍。
这就是 Docker私有仓库搭建内网加速 的核心价值。
环境准备:你需要哪些东西
- 一台 Linux 服务器(可以是虚拟机或物理机),我以 Ubuntu 20.04 为例
- Docker 已安装(如果没有,先执行
curl -fsSL https://get.docker.com | bash安装) - 一个内网域名或者 IP 地址(例如
192.168.1.100) - 防火墙放行 5000 端口(Registry 默认端口)
三步搭建私有仓库
1. 启动 Registry 容器
直接使用 Docker 官方 Registry 镜像,一条命令搞定:
docker run -d \
--restart=always \
--name registry \
-p 5000:5000 \
-v /data/registry:/var/lib/registry \
registry:2
说明:-v /data/registry:/var/lib/registry 把镜像数据持久化到宿主机,即使容器重启镜像也不会丢失。
2. 推送一个测试镜像到私有仓库
先用公开镜像测试,比如拉取 nginx:
docker pull nginx:alpine
docker tag nginx:alpine 192.168.1.100:5000/nginx:alpine
docker push 192.168.1.100:5000/nginx:alpine
如果一切正常,你会看到镜像层被上传。
注意这里 IP 换成你自己的服务器 IP。
3. 在内网客户端拉取镜像
在其他机器上直接执行:
docker pull 192.168.1.100:5000/nginx:alpine
速度应该快到飞起。
但如果你的 Registry 没有配置 HTTPS,Docker 默认拒绝非 HTTPS 仓库,会报 http: server gave HTTP response to HTTPS client。
下面教你解决。
避坑指南:避开这些常见错误
⚠️ 问题1:Docker 客户端报 HTTPS 错误
原因:Docker 认为私有仓库必须走 HTTPS,但你的 Registry 只开了 HTTP。
解决方法:在需要拉取镜像的机器上,编辑 /etc/docker/daemon.json,添加 insecure-registries:
{
"insecure-registries": ["192.168.1.100:5000"]
}
然后重启 Docker:sudo systemctl restart docker。
之后再拉取就不会报错了。
⚠️ 问题2:推送镜像时提示认证失败
如果私有仓库需要密码,可以先用 htpasswd 生成认证文件。
不过内网加速场景通常不设密码,方便团队使用。
如果一定要加,参考官方 Registry 文档配置 auth。
⚠️ 问题3:磁盘空间被镜像撑爆
Registry 默认不会自动清理旧镜像。
建议定期手动执行 docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml,或者结合定时任务(crontab)每周清理一次。
验证加速效果
拉取镜像时看速度就能直观感受。
你也可以用 time 命令对比外网和私有仓库的耗时:
time docker pull nginx:alpine # 从外网拉取
time docker pull 192.168.1.100:5000/nginx:alpine # 从私有仓库拉取
如果私有仓库已经缓存了镜像,第二次拉取几乎瞬间完成。
另外,可以在另一台机器上重复拉取,观察是否从局域网传输(通过 iftop 或 nload 工具查看流量)。
总结与后续建议
现在你已经完成了 Docker私有仓库搭建内网加速 的完整流程。
如果团队规模较大,可以进一步配置 Registry 的镜像代理功能(pull-through proxy),自动从 Docker Hub 拉取并缓存常用镜像,省去手动搬运的麻烦。
遇到问题先检查防火墙、daemon.json 配置和磁盘空间,大部分都能快速解决。
祝你内网飞驰!