部署私有 Docker Registry

以下是部署私有 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:
替换为你的服务器 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/:5000
sudo cp domain.crt /etc/docker/certs.d/:5000/ca.crt
sudo systemctl restart docker
Windows:
将 domain.crt 复制到 C:\ProgramData\docker\certs.d\:5000\ca.crt,然后重启 Docker。
登录 Registry
docker login :5000
输入用户名和密码后,即可登录。

7. 推送和拉取镜像
标记镜像
docker tag my-image :5000/my-image
推送镜像
docker push :5000/my-image
拉取镜像
docker pull :5000/my-image
8. 验证部署
查看镜像目录
使用 API 查看镜像列表:

curl -u username:password https://:5000/v2/_catalog | jq
查看日志
查看 Registry 容器日志:

docker logs registry
9. 可选:部署 Web UI 工具
部署 Docker Registry UI 提供图形化管理界面:

docker run -d \
-p 8080:80 \
-e REGISTRY_URL=https://:5000 \
-e REGISTRY_TITLE=”私有仓库” \
–name registry-ui \
joxit/docker-registry-ui:static
访问 http://:8080 即可通过 Web UI 管理镜像。

总结
通过以上步骤,你可以成功部署一个具备用户管理和 TLS 加密功能的私有 Docker Registry,并通过 docker login 进行身份验证。

Markdown 2769 bytes 305 words 146 lines Ln 134, Col 15HTML 1942 characters 239 words 82 paragraphs

作者: cavalier

能源行业从业者,业余爱好象棋、C++还有二胡、乒乓也很喜欢

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注