Docker Registry私有仓库介绍与部署(2)

在推送镜像中出现错误,因为client与Registry交互默认将采用https访问,但我们在install Registry时并未配置指定任何tls相关的key和crt文件,https将无法访问。因此, 我们需要配置客户端的Insecure Registry选项(另一种解决方案需要配置Registry的证书)。

2.3 配置客户端Insecure Registry

在客户端中的/etc/sysconfig/docker中修改如下选项:

# 配置Docker执行参数 other_args="--insecure-registry 192.168.202.14:5000" # 重启Docker服务 service docker restart

再次执行PUSH镜像操作:

# 推到Registry服务器中 [root@localhost ~]# docker push 192.168.202.14:5000/centos The push refers to a repository [192.168.202.14:5000/centos] (len: 1) 65e4158d9625: Pushed 5506dda26018: Pushed latest: digest: sha256:800f2d4558acd67f52262fbe170c9fc2e67efaa6f230a74b41b555e6fcca2892 size: 2739

这时, 推送镜像成功。

2.4 配置Docker Registry管理界面

Docker官方只提供了REST API,并没有给我们一个界面。 可以使用Portus来管理私有仓库, 同时可以使用简单的UI管理工具, Docker提供私有库“hyper/docker-registry-web”, 下载该镜像就可以使用了。

docker run -d \ -p 8080:8080 \ --name registry-web \ --link registry-srv \ -e REGISTRY_URL=http://registry-srv:5000/v2 \ -e REGISTRY_NAME=localhost:5000 \ hyper/docker-registry-web

详情请参照:Docker hub

2.5 配置Docker Registry签名证书

在Docker Registry主机中生成OpenSSL的自签名证书:

cat << EOF > ssl.conf [ req ] prompt = no distinguished_name = req_subj x509_extensions = x509_ext [ req_subj ] CN = Localhost [ x509_ext ] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer basicConstraints = CA:true subjectAltName = @alternate_names [ alternate_names ] DNS.1 = localhost IP.1 = 192.168.202.14 EOF sudo mkdir /certs # 生成证书文件 sudo sh -c "openssl req -config ssl.conf \ -new -x509 -nodes -sha256 -days 365 -newkey rsa:4096 \ -keyout /certs/server-key.pem -out /certs/server-crt.pem"

生成cert文件后,用以下命令来启动Docker Registry私有仓库。

docker rm -f registry docker run -d \ -p 5000:5000 \ --name registry \ --restart=always \ -v /var/lib/registry:/var/lib/registry \ -v /certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \ registry:2.3.0

证书生成好了,客户端现在就不需要 --insecure-registry 了,但是由于这是自签名证书,客户端还需要把证书文件复制过去并配置证书文件:

Docker Registry所在本机操作

sudo mkdir -p /etc/docker/certs.d/192.168.202.14:5000 sudo cp /certs/server-crt.pem /etc/docker/certs.d/192.168.202.14:5000/ca.crt sudo service docker restart

Docker客户端操作

sudo mkdir -p /etc/docker/certs.d/192.168.202.14:5000 sudo scp root@192.168.202.14:/certs/server-crt.pem /etc/docker/certs.d/192.168.202.14:5000/ca.crt sudo service docker restart 2.6 配置Docker Registry认证

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/167624591ff24406bca03df0e908f1b9.html