Docker Hub 公有仓库存在以下缺点:
1、网络依赖性强,链接速度限制;
2、私有化资料存放网络不安全
3、私有化仓库需要收费,存在安全风险

解决方案使用本地registry
Docker已经讲registry开源了,同时在Docker Hub上也有官方镜像registry
我们可以直接使用:
(1)启动registry容器
shell>docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
使用registry:2的镜像
-d 后台运行
-p 讲容器的5000端口映射到主机的5000端口
-v 将容器/var/lib/registry目录映射到Host的/myregistry/docker,用于存放镜像数据

验证:shell>docker ps 查看仓库容器是否启动

(2)本地下载一个测试镜像
shell>docker pull centos

(3)通过docker tag 重命名本地镜像,与registry匹配
shell>docker tag centos 仓库服务器地址:5000/用户名/centos:v1
shell>docker tag centos x.x.x.x:5000/testname/centos:v1
repository的完整格式为:

Docker Hub 上可以省略[registry-host]:[port],默认为docker.io

(4)docker pull/push测试
shell>docker push x.x.x.x:5000/testname/centos:v1
shell>docker pull x.x.x.x:5000/testname/centos:v1

(5)上传的镜像在该目录下
/myregistry/docker/registry/v2/repositories/docker39/cetnos_httpd/

提示:
shell>docker pull x.x.x.x:5000/testname/cetnos
Using default tag: latest
Error response from daemon: Get https://x.x.x.x:5000/v2/: http: server gave HTTP response to HTTPS client
这是docker不支持https
centos系统通过:修改或者添加daemon.json文件,重启docker服务即可
shell>vim /etc/sysconfig/daemon.json
{"insecure-registries":["x.x.x.x:5000"]}

shell>systemctl restart docker //重启服务后,记得启动registry仓库容器