【 Docker 】部署构建私有仓库Docker-Registry
🚀 Docker Registry + Web UI 私有镜像仓库部署指南
docker-registry
是官方提供的 轻量级 私有 Docker 镜像仓库,并通过 docker-registry-ui 提供 Web 界面,适用于 个人或小型团队。
📌 1. 环境要求
- 操作系统:Linux(CentOS 7+/Ubuntu 20.04+/Rocky Linux 9+)
- CPU:2 核以上
- 内存:2GB 以上
- 存储:50GB 以上(根据镜像大小调整)
- Docker 版本:28.0.0+
- Docker Compose 版本:2.0+
📌 2. 安装 Docker 和 Docker Compose
📍 2.1 安装 Docker
curl -fsSL https://get.docker.com | bash
systemctl enable docker --now
📍 2.2 验证 Docker 版本
docker version
确保 Client & Server 版本均为 28.0.0
及以上。
📍 2.3 安装 Docker Compose
mkdir -p /usr/local/lib/docker/cli-plugins
curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
docker compose version
📌 3. 部署 Docker Registry
首先,运行 Docker Registry,监听 5000
端口:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
- 这将在 5000 端口 启动 私有 Docker 镜像仓库。
- 镜像默认存储在
/var/lib/registry
目录。
📍 测试是否成功
curl http://localhost:5000/v2/_catalog
如果返回 { "repositories": [] }
,表示 Registry 运行正常。
📌 4. 部署 Web UI
使用 Joxit/docker-registry-ui
提供 Web 管理界面:
docker run -d -p 8080:80 --restart=always --name registry-ui \
-e REGISTRY_TITLE="My Private Registry" \
-e NGINX_PROXY_PASS="http://registry:5000" \
--link registry \
joxit/docker-registry-ui:latest
📍 4.1 访问 Web UI
现在,打开浏览器,访问:
http://localhost:8080
你将看到 Docker Registry 的 Web UI 🎉。
📌 5. 推送和拉取镜像
📍 5.1 标记本地镜像
docker tag ubuntu:latest localhost:5000/ubuntu:latest
📍 5.2 推送镜像
docker push localhost:5000/ubuntu:latest
📍 5.3 拉取镜像
docker pull localhost:5000/ubuntu:latest
📍 5.4 查看仓库中的镜像
curl http://localhost:5000/v2/_catalog
📌 6. 配置 Docker 允许 HTTP 访问
默认情况下,Docker 不允许 HTTP 访问私有 Registry,你需要在 /etc/docker/daemon.json
添加:
{
"insecure-registries": ["localhost:5000"]
}
然后重启 Docker:
systemctl restart docker
📌 7. 配置 Registry 数据存储
如果你想 更改存储路径,可以映射一个 本地目录:
docker run -d -p 5000:5000 --restart=always \
-v /data/registry:/var/lib/registry \
--name registry registry:2
所有的镜像将存储在 /data/registry
目录。
📌 8. 使用 HTTPS 安全访问(推荐生产环境)
📍 8.1 生成自签名 SSL 证书
mkdir -p /certs && cd /certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt
填入证书信息时,Common Name (CN)
需填写你的 域名或 IP 地址。
📍 8.2 运行带 HTTPS 的 Registry
sh复制编辑docker run -d -p 443:5000 --restart=always \
-v /certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
--name registry registry:2
现在可以通过 https://your-domain.com
访问私有仓库。
📍 8.3 在 Docker 配置可信证书
将 domain.crt
复制到:
cp /certs/domain.crt /etc/docker/certs.d/your-domain.com/ca.crt
然后重启 Docker:
systemctl restart docker
📌 9. 配置用户名密码认证(更安全)
如果你需要 用户名 + 密码 认证:
mkdir -p /auth
docker run --entrypoint htpasswd registry:2 -Bbn myuser mypassword > /auth/htpasswd
📍 9.1 运行带认证的 Registry
docker run -d -p 5000:5000 --restart=always \
-v /auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
--name registry registry:2
📍 9.2 登录私有仓库
docker login localhost:5000
输入 myuser / mypassword
即可。
📌 10. 总结
✅ docker-registry
是官方 Docker 镜像仓库,轻量级、易部署
✅ 支持 HTTPS、用户认证、本地存储
✅ 适用于小型企业、开发团队内部使用
✅ 可选 Web UI 进行镜像管理
🚀 现在,你已经成功部署 Docker Registry 私有镜像仓库 🎉!