安装私有镜像仓库regisry2

前提条件

确保已安装 Docker 环境(Docker Engine),可通过 docker --version 验证是否安装成功。

安装并运行 registry:2 镜像

  1. 拉取镜像
    执行以下命令从 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

image

 

配置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. 可以拉取镜像了

           image

 

 

 

 

 

 

 

 

 

posted @ 2025-11-05 14:24  蓬莱寒剑  阅读(7)  评论(0)    收藏  举报