【 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 私有镜像仓库 🎉!

posted @ 2025-03-07 17:50  一条长江  阅读(449)  评论(0)    收藏  举报