道理很简单,咱们在使用Docker的时候,常常须要使用到docker pull命令从docker hub拉取咱们须要的镜像,进行操做。这样其实有利也有弊,docker hub是官方维护的公用仓库,也是最大、最全的docker镜像仓库。每一个人有一个docker hub的帐号便可将本身的上传到docker hub上,方便随时拉取使用。可是docker hub有个弊端就是受网络带宽影响,有时候下载速度稍微有些很差。docker官方呢,在docker hub上提供了一个registry镜像,咱们使用这个镜像就能够搭建一个私有的注册服务器。咱们能够经过把经常使用的镜像都放到私有的registry上,这样就避免了常常去docker hub上拉取的操做,效率能够获得必定的提升。固然实际工做,咱们不必定须要,由于docker hub能够提供咱们大部分的需求。python
环境:docker001上搭建registry、docker002当作测试客户端。docker
使用docker001搭建registry服务器
docker pull registry#拉取registry镜像 docker run -d -p 5000:5000 --restart=always -v /opt/registry:/var/lib/registry registry #启动一个registry容器,-d守护态运行、 -p将docker的5000断开和registry的5000端口进行映射、 自启动、 指定registry的/var/lib/registry/目录映射docker001的/opt/registry/目录(至关于挂载)
firewall-cmd --add-port=5000/tcp --permanent#开放docker001的5000端口 firewall-cmd --reload
下图是验证方法网络
在启动registry时咱们加了参数-v /opt/registry:/var/lib/registry,这里就是下面要验证的地方。tcp
docker002上测试ide
dockers registry V2 版本客户端默认使用https协议去push镜像到仓库服务 器,而如今咱们的仓库服务器只配置了支持http,因此客户端会push镜像失败。如要但愿docker客户端支持http协议,需在启动docker时加入参数--insecure-registry your_registry_ip:port 。直接编辑/usr/lib/systemd/system/docker.service文件修改便可,以下。测试
而后从新加载daemon、重启docker。spa
systemctl daemon-reload systemctl restart docker.service
首先先打上标签,不然docker会默认将镜像上传到docker hub上。3d
执行push命令将docker002本地的镜像上传到docker001上的registry。rest
回到docker001,咱们进入到/opt/registry,查看是否成功上传(目录层级不少,一层一层往下找就能够看到了)
既然能上传,那么相应的,拉取操做也应当能够。
首先我在registry上传了一个镜像registry:001
在docker002上
使用pull命令拉取镜像
这样咱们搭建私有registry的工做就完成,在企业内部搭建一个私有的registry,这样各部门员工使用镜像就方便多了。也有利于公司数据、研发成果的保密。