安装私有镜像仓库regisry2
前提条件
确保已安装 Docker 环境(Docker Engine),可通过
docker --version 验证是否安装成功。安装并运行 registry:2 镜像
-
拉取镜像
执行以下命令从 Docker Hub 拉取registry:2镜像:docker pull registry:2
2. 运行 Registry 容器
拉取完成后,启动一个 Registry 容器(默认端口为 5000):
docker run -d -p 5000:5000 -v /path/to/local/storage:/data/registry --name my-registry registry:2
3. 验证运行状态
检查容器是否正常启动:
docker ps | grep my-registry
4. 通过如下地址访问registry2
curl http://localhost:5000/v2/_catalog
但是push镜像的时候,会出现如下错误,需要配置https

配置https
一. 生成自签名证书(包含内网 / 外网 IP)
自签名证书需要包含所有访问 Registry 的 IP(内网 + 外网),通过
subjectAltName(SAN)字段指定。 1. 创建证书配置文件(openssl.cnf)
创建一个配置文件,添加 IP 地址信息:
mkdir /opt/openssl
vim /opt/openssl/openssl.cnf
内容如下
[req] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn x509_extensions = v3_ca [dn] C = CN ST = YourProvince L = YourCity O = YourOrg OU = YourDept CN = registry.example.com # 主域名(可选,可填任意值) [v3_ca] subjectAltName = IP:10.25.0.129,IP:106.37.82.42 # 替换为你的内网IP和外网IP extendedKeyUsage = serverAuth keyUsage = digitalSignature, keyEncipherment basicConstraints = CA:TRUE
2. 生成证书和私钥
执行以下命令生成自签名证书(有效期 365 天):
openssl req -newkey rsa:2048 -nodes -keyout registry.key -x509 -days 365 -out registry.crt -config openssl.cnf
- 生成的
registry.key(私钥)和registry.crt(证书)将用于 Registry 配置。
二、配置 Registry 2 启用 HTTPS
假设 Registry 已通过 Docker 容器运行,修改配置文件或启动命令。
1. 准备证书目录
将生成的证书和私钥放到宿主机的目录(如
/etc/registry/certs):mkdir -p /etc/registry/certs cp registry.key /etc/registry/certs/ cp registry.crt /etc/registry/certs/
2. 配置 Registry 的config.yml
创建或修改 Registry 配置文件(如
/etc/registry/config.yml): version: 0.1 log: fields: service: registry storage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry http: addr: :5000 # 监听端口(默认5000) tls: certificate: /certs/registry.crt # 容器内证书路径 key: /certs/registry.key # 容器内私钥路径
3. 启动 Registry 容器(挂载证书和配置)
docker run -d \ --restart=always \ --name registry \ -p 5000:5000 \ -v /etc/registry/config.yml:/etc/docker/registry/config.yml \ -v /etc/registry/certs:/certs \ -v /data/registry2:/var/lib/registry \ registry:2
三、客户端信任自签名证书
由于是自签名证书,客户端(Docker 主机)需要信任该证书,否则会报
x509: certificate signed by unknown authority错误。1. 复制证书到客户端
将
registry.crt复制到所有需要访问 Registry 的 Docker 主机,例如:1 mkdir -p /etc/docker/certs.d/10.25.0.129:5000 2 scp root@10.25.0.129:/etc/registry/certs/registry.crt /etc/docker/certs.d/10.25.0.129\:5000/ca.crt
2. 重启docker服务
3. 可以拉取镜像了

本文来自博客园,作者:蓬莱寒剑,转载请注明原文链接:https://www.cnblogs.com/jhans/p/19193551

浙公网安备 33010602011771号