如何使用私有 Docker Registry 与 Zun¶
Zun 默认从 Docker Hub 拉取容器镜像。但是,可以配置 Zun 从私有 Registry 拉取镜像。
本文档提供了一个示例,用于部署和配置 Zun 的 Docker Registry。有关部署 Docker Registry 的全面指南,请参阅 此处
部署私有 Docker Registry¶
安装私有 Docker Registry 的一种简单方法是将其作为 Zun 容器部署
$ openstack appcontainer create \
--restart always \
--expose-port 443 \
--name registry \
--environment REGISTRY_HTTP_ADDR=0.0.0.0:443 \
--environment REGISTRY_HTTP_TLS_CERTIFICATE=/domain.crt \
--environment REGISTRY_HTTP_TLS_KEY=/domain.key \
registry:2
注意
根据租户网络的配置,您可能需要确保容器可以从云的其他租户访问。例如,您可能需要将浮动 IP 关联到容器。
为了使您的 Registry 可供外部主机访问,您必须使用 TLS 证书(由证书颁发机构颁发)或创建自签名证书。本文档向您展示如何生成和使用自签名证书
$ mkdir -p certs
$ cat > certs/domain.conf <<EOF
[req]
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[req_distinguished_name]
CN = zunregistry.com
[req_ext]
subjectAltName = IP:172.24.4.49
EOF
$ openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key \
-x509 -days 365 -out certs/domain.crt -config certs/domain.conf
注意
将 zunregistry.com 替换为您的 Registry 的域名。
注意
将 172.24.4.49 替换为您的 Registry 的 IP 地址。
注意
您需要确保域名(即 zunregistry.com)将被解析为 IP 地址(即 172.24.4.49)。例如,您可能需要相应地编辑 /etc/hosts。
将证书复制到 Registry
$ openstack appcontainer cp certs/domain.key registry:/
$ openstack appcontainer cp certs/domain.crt registry:/
配置 Docker 守护进程以接受证书
# mkdir -p /etc/docker/certs.d/zunregistry.com
# cp certs/domain.crt /etc/docker/certs.d/zunregistry.com/ca.crt
注意
将 zunregistry.com 替换为您的 Registry 的域名。
注意
在每个计算节点上执行这些步骤。
启动 Registry
$ openstack appcontainer start registry
验证 Registry 是否正常工作
$ docker pull ubuntu:16.04
$ docker tag ubuntu:16.04 zunregistry.com/my-ubuntu
$ docker push zunregistry.com/my-ubuntu
$ openstack appcontainer run --interactive zunregistry.com/my-ubuntu /bin/bash
注意
将 zunregistry.com 替换为您的 Registry 的域名。