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的完整格式为: [registry-host]:[port]/[username]/xxx
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仓库容器