🚀 Docker Registry + Web UI 部署方案(轻量级)
本方案使用 Docker Registry 搭建私有镜像仓库,并通过 docker-registry-ui 提供 Web 界面,适用于 个人或小型团队。
🚀 1. 部署 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 运行正常。
🚀 2. 部署 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
📌 2.1 访问 Web UI
现在,打开浏览器,访问:
http://localhost:8080
你将看到 Docker Registry 的 Web UI 🎉。
🚀 3. 推送和拉取镜像
📌 3.1 标记本地镜像
docker tag ubuntu:latest localhost:5000/ubuntu:latest
📌 3.2 推送镜像
docker push localhost:5000/ubuntu:latest
📌 3.3 拉取镜像
docker pull localhost:5000/ubuntu:latest
📌 3.4 查看仓库中的镜像
curl http://localhost:5000/v2/_catalog
🚀 4. 配置 Docker 允许 HTTP 访问
默认情况下,Docker 不允许 HTTP 访问私有 Registry,你需要在 /etc/docker/daemon.json
添加:
{"insecure-registries": ["localhost:5000"]
}
然后重启 Docker:
systemctl restart docker
🚀 5. 配置 Registry 数据存储
如果你想 更改存储路径,可以映射一个 本地目录:
docker run -d -p 5000:5000 --restart=always \-v /data/registry:/var/lib/registry \--name registry registry:2
所有的镜像将存储在 /data/registry
目录。
🚀 6. 使用 HTTPS 安全访问(推荐生产环境)
📌 6.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 地址。
📌 6.2 运行带 HTTPS 的 Registry
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
访问私有仓库。
📌 6.3 在 Docker 配置可信证书
将 domain.crt
复制到:
cp /certs/domain.crt /etc/docker/certs.d/your-domain.com/ca.crt
然后重启 Docker:
systemctl restart docker
🚀 7. 配置用户名密码认证(更安全)
如果你需要 用户名 + 密码 认证:
mkdir -p /auth
docker run --entrypoint htpasswd registry:2 -Bbn myuser mypassword > /auth/htpasswd
📌 7.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
📌 7.2 登录私有仓库
docker login localhost:5000
输入 myuser / mypassword
即可。