以下是部署私有 Docker Registry 并具备用户管理和 TLS 功能的完整步骤:
1. 准备工作
一台服务器(如 ECS 实例)。
安装 Docker 和 Docker Compose。
确保服务器开放所需端口(如 5000 或 443)。
2. 创建用户认证文件
使用 htpasswd 创建用户认证文件:
htpasswd -Bc registry.password username
-B:使用 bcrypt 加密。
-c:创建新文件(若文件已存在则覆盖)。
username:用户名。
添加更多用户时,去掉 -c 选项:
htpasswd -B registry.password anotheruser
3. 生成 TLS 证书
为 Registry 生成自签名证书:
openssl req -newkey rsa:4096 -nodes -sha256 \
-keyout domain.key -x509 -days 365 \
-out domain.crt \
-subj “/CN=
-addext “subjectAltName=IP:
将
4. 创建 Docker Compose 文件
创建一个 docker-compose.yml 文件,配置 Registry 服务:
version: ‘3’
services:
registry:
image: registry:2
container_name: registry
ports:
– “5000:5000”
environment:
REGISTRY_AUTH: htpasswd
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.password
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
volumes:
– ./registry-data:/var/lib/registry
– ./certs:/certs
– ./auth:/auth
registry-data:存储镜像数据的目录。
certs:存放 TLS 证书的目录。
auth:存放用户认证文件的目录。
5. 启动 Registry 服务
在 docker-compose.yml 文件所在目录运行:
docker-compose up -d
6. 配置 Docker 客户端
信任自签名证书
将 domain.crt 复制到 Docker 客户端的证书目录:
Linux:
sudo mkdir -p /etc/docker/certs.d/
sudo cp domain.crt /etc/docker/certs.d/
sudo systemctl restart docker
Windows:
将 domain.crt 复制到 C:\ProgramData\docker\certs.d\
登录 Registry
docker login
输入用户名和密码后,即可登录。
7. 推送和拉取镜像
标记镜像
docker tag my-image
推送镜像
docker push
拉取镜像
docker pull
8. 验证部署
查看镜像目录
使用 API 查看镜像列表:
curl -u username:password https://
查看日志
查看 Registry 容器日志:
docker logs registry
9. 可选:部署 Web UI 工具
部署 Docker Registry UI 提供图形化管理界面:
docker run -d \
-p 8080:80 \
-e REGISTRY_URL=https://
-e REGISTRY_TITLE=”私有仓库” \
–name registry-ui \
joxit/docker-registry-ui:static
访问 http://
总结
通过以上步骤,你可以成功部署一个具备用户管理和 TLS 加密功能的私有 Docker Registry,并通过 docker login 进行身份验证。
Markdown 2769 bytes 305 words 146 lines Ln 134, Col 15HTML 1942 characters 239 words 82 paragraphs