一、搭建仓库
下载镜像
docker pull registry
创建目录
mkdir -p /data/docker_reg
运行容器
docker run -d -p 2333:5000 --name=local_reg --restart=always --privileged=true -v /data/docker_reg:/var/lib/registry docker.io/registry
查看docker服务
service docker status
vi /usr/lib/systemd/system/docker.service
在ExecStart节点里增加
--insecure-registry 127.16.0.8:2333 \
重启服务
systemctl daemon-reload
service docker restart
停止的容器再拉起来一下
docker start local_reg
docker pull docker.io/hello-world
docker tag docker.io/hello-world 172.16.0.8:2333/hello-world
docker push 172.16.0.8:2333/hello-world
正常的话会显示
The push refers to a repository [172.16.0.8:2333/hello-world]
af0b15c8625b: Pushed
latest: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524
二、创建ca证书以支持其他服务器的仓库访问
仓库所在服务器的配置
mkdir -r /data/certs
cd /data/certs
openssl req -newkey rsa:2048 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt
这里创建时其他可以为空,但是server name必须要和后面使用的hostname对应
仓库服务重新起来
docker rm -f local_reg
docker run -d -p 2333:5000 --name=local_reg --restart=always --privileged=true -v /data/docker_reg:/var/lib/registry -v /data/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/ca.crt -e REGISTRY_HTTP_TLS_KEY=/certs/ca.key docker.io/registry
重启下docker服务
service docker restart
客户机的配置
修改host文件
vi /etc/hosts
host名称和ca证书对应
172.16.0.8 docker-reg-host
创建证书目录
mkdir -p /etc/docker/certs.d/docker-reg-host:2333/
将仓库服务器生成的ca.crt拷贝到这台客户机的/etc/docker/certs.d/docker-reg-host:2333/下
重启下docker服务
service docker restart
修改下镜像的名称就可以push了
docker tag docker.io/hello-world docker-reg-host:2333/hello-world
docker push docker-reg-host:2333/hello-world
pull也可以正常使用了
docker pull docker-reg-host:2333/hello-world