参考:https://blog.csdn.net/zcjwsrf/article/details/82656479
参考:https://blog.csdn.net/Michaelwubo/article/details/80689705
官网:https://docs.docker.com/registry/deploying/
服务器环境
centos7.1
docker 19.03.2
拉取register镜像
docker pull register
运行register私库容器
docker run -d -p 5000:5000 --restart=always --name registry -v /root/docker-about/register-mapper:/var/lib/registry registry
--restart=always
docker启动的时候,register容器也会启动
-v /root/docker-about/register-mapper:/var/lib/registry
主机挂载/root/docker-about/register-mapper到容器的/var/lib/registry目录,/var/lib/registry目录是私库的镜像存放目录
尝试tag本地镜像后上传到私库
我本地docker镜像库有个nginx,用它来试验一下
docker tag nginx:latest 192.168.200.207:5000/nginx
tag完后,镜像库多了一个192.168.200.207:5000/nginx的镜像,其中ip地址必须为register私库所在的ip地址
尝试push到私库
docker push 192.168.200.207:5000/nginx
报错
Get https://192.168.200.207:5000/v2/: http: server gave HTTP response to HTTPS client
没有https证书,到docker的配置文件里面添加
"insecure-registries":["192.168.200.207:5000"]
就可以使用http
vim /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-file": "3",
"max-size": "100m"
},
"registry-mirrors": ["https://7fsmy198.mirror.aliyuncs.com"],
"insecure-registries":["192.168.200.207:5000"]
}
重启docker
systemctl daemon-reload
systemctl restart docker
查看register启动没,设置了--restart=always,docker重启,register应该也会重启的。
再尝试push到私库
docker push 192.168.200.207:5000/nginx
509a5ea4aeeb: Pushed
3bb51901dfa3: Pushed
2db44bce66cd: Pushed
latest: digest: sha256:066edc156bcada86155fd80ae03667cf3811c499df73815a2b76e43755ebbc76 size: 948
提示push成功
尝试从私库拉取镜像
docker pull 192.168.200.207:5000/nginx
必须指明 ip+端口/镜像名
其他服务器想从register私库拉取镜像,也要设置
"insecure-registries":["192.168.200.207:5000"]
然后重启docker
systemctl daemon-reload
systemctl restart docker
查询私库的镜像
参考:https://www.cnblogs.com/elvi/p/8384604.html
curl http://192.168.200.207:5000/v2/_catalog