CentOS 7 配置 docker-registry TLS 安全认证

注: 以下内容中的 “192.168.1.130” IP 地址请自行修改为你的 Docker 宿主机的地址。

创建 docker-registry 数据存储目录

mkdir -p /data/docker-registry/{auth,certs,lib}

修改 /etc/pki/tls/openssl.cnf 配置 (注: 这一步很重要, 否则后面会提示 x509 错误!)

[ v3_ca ]
subjectAltName = IP:192.168.1.130  # 增加此行内容

生成证书

cd /data/docker-registry/certs \
    && openssl req -newkey rsa:2048 -nodes -keyout registry_auth.key -x509 -days 365 -out registry_auth.crt

update-ca-trust extract

创建管理员 admin 密码

docker run --entrypoint htpasswd registry:2 -Bbn admin r58eYM8wKDvV >> /data/docker-registry/auth/htpasswd

启动容器

docker run -d -p 5000:5000 --restart=always --name docker-registry \
  -v /data/docker-registry/lib:/var/lib/registry \
  -v /data/docker-registry/auth:/auth \
  -v /data/docker-registry/certs:/certs \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry_auth.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/registry_auth.key \
  registry:2

拷贝证书

mkdir -p /etc/docker/certs.d/192.168.1.130\:5000/ \
    && cp -f /data/docker-registry/certs/registry_auth.crt /etc/docker/certs.d/192.168.1.130\:5000/ca.crt

客户端登录

docker login -u admin -p r58eYM8wKDvV 192.168.1.130:5000

相关推荐