全站最帅😎
发布于 2020-04-02 / 1649 阅读
0
0

Docker配置私有仓库(解决Docker Swarm模式中的镜像同步问题)

工作当中拥有了大量的镜像,如何方便的管理这些镜像呢?并且在Docker Swarm模式中启动不同的服务需要不同的镜像,所以为了保证所有镜像都能被每个结点访问到,搭建私有仓库就很有必要啦~

一、安装Docker Registry

高版本的Docker中需要开启TSL证书,不然pull镜像会报错。
这里使用openssl生成私人证书工具,生成过程中会提示填入各种信息,注意CN一栏的信息要填入跟访问的地址相同的 hostname,我这里的仓库服务在节点 kqkd-qizai

mkdir -p certs
openssl req -newkey rsa:4096 -nodes -sha256 \
            -keyout certs/kqkd-qizai.key \
            -x509 -days 365 \
            -out certs/kqkd-qizai.crt

在当前的目录下就可以看到生成的certs文件夹了,里面包含了kqkd-qizai.crt和kqkd-qizai.key。

image.png

kqkd-qizai.crt是docker客户端需要的证书,所以将kqkd-qizai.crt分发到docker节点下的 /etc/docker/certs.d/kqkd-qizai:5000/ 下,注意!这里的 kqkd-qizai:5000 是上一步的 hostname 和下一步registry对外暴露的端口

mkdir -p /etc/docker/certs.d/kqkd-qizai:5000/
cp /root/certs/kqkd-qizai.crt /etc/docker/certs.d/kqkd-qizai:5000/

TSL配置好之后,就可以运行register镜像,如果没有下载registry镜像则会自动开始下载

 docker run -d --restart=always --name registry \
 -v /root/certs:/certs \
 -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \ 
 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/kqkd-qizai.crt \
 -e REGISTRY_HTTP_TLS_KEY=/certs/kqkd-qizai.key \
 -p 443:443 registry:2

评论