Docker Registry——搭建专属的容器仓库

题记

一般情况下,如果我们的计算机在联网环境下,我们就可以直接通过docker pull images获得相关的镜像,当然这必须是联网环境,根据用户的网速情况或者镜像的大小有不同的等待,如果我们能够在本地建立一个类似与远程联网的镜像仓库,将我们常用的镜像都放在自己管理的专属仓库,岂不是无需等待,即可快速获得我们希望得到的镜像么.


Docker Registry就是完成搭建本地容器仓库,简单来说就是讲一个专门的服务器作为镜像仓库,启用一个Docker Registry容器实例提供服务。

如上图所示,我们将服务器192.168.12.132作为容器仓库,它应该有一个或者两个网卡,一个可以连接互联网,随时下载或者我们自己生成相关docker镜像,然后通过另外一个容器互联的网络进行分发,其他宿主机可以快速获得镜像仓库里面的镜像。


下面我们就看一下如何搭建专属的容器仓库。

1、由于我们启用的registry服务不是安全可信赖的,所以我们需要在所有参与的物理服务器添加可信参数,具体在/etc/default/docker文件,添加相关参数:--insecure-registry 192.168.12.132:5000

[html]  view plain  copy
  1. DOCKER_OPTS="-H 0.0.0.0:2375 -H unix:///var/run/docker.sock --insecure-registry 192.168.12.132:5000"  
当然,任何希望能够从容器仓库获得镜像的服务器也需要修改相关文件,添加如上信息即可。

重启docker服务

[html]  view plain  copy
  1. service docker restart  

2、从docker hub下载docker registry镜像,然后启动,执行如下命令

 docker run -d -v /root/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.3.0

[html]  view plain  copy
  1. root@controller:~# docker run -d -v /root/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:2.3.0  
  2. Unable to find image 'registry:2.3.0' locally  
  3. 2.3.0: Pulling from library/registry  
  4. fdd5d7827f33: Pull complete  
  5. a3ed95caeb02: Pull complete  
  6. a79b4a92697e: Pull complete  
  7. 1881c09fc734: Pull complete  
  8. 0f24f5ab4e03: Pull complete  
  9. Digest: sha256:5b6211cc1aa81916042ef0784ab8c8c2ce745f9dd851a67b2d80bf52a7f1c3c3  
  10. Status: Downloaded newer image for registry:2.3.0  
  11. cf11bef3fc9dc5262d10797222dc3412433adf47de470350d15d1956df0b644c  


上述命令就是启动一个registry:2.3.0版本的镜像实例,如果本地没有,需要下载,Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/root/registry目录挂载到该目录,即可实现将镜像保存到主机的/root/registry目录了。默认registry的端口为5000,如果该端口被占用可以更换其他未占用的端口。

设置重启策略:使用在Docker run的时候使用--restart参数来设置。
no - container不重启
on-failure - container推出状态非0时重启
always - 始终重启

然后我们就可以查看docker运行状态以及镜像情况

[html]  view plain  copy
  1. root@controller:~# docker images  
  2. REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE  
  3. swarm                   latest              a180b24e38ed        4 weeks ago         19.34 MB  
  4. docker/ucp-proxy        1.1.1               354629dc8529        5 weeks ago         17.43 MB  
  5. docker/ucp-cfssl        1.1.1               3b3684098101        5 weeks ago         53.61 MB  
  6. docker/ucp              latest              40fe8a8c618e        5 weeks ago         20.49 MB  
  7. docker/ucp-auth         1.1.1               7b0a22fd86df        5 weeks ago         26.82 MB  
  8. docker/ucp-controller   1.1.1               c1ada015cdb4        5 weeks ago         26.23 MB  
  9. docker/ucp-etcd         1.1.1               cb7711a7fea2        5 weeks ago         35.31 MB  
  10. docker/ucp-compose      1.1.1               c6565efb4f69        5 weeks ago         58.61 MB  
  11. docker/ucp-auth-store   1.1.1               4fbf8982055b        5 weeks ago         57.78 MB  
  12. docker/ucp-swarm        1.1.1               7a1bcedacf02        5 weeks ago         19.34 MB  
  13. docker/ucp-dsinfo       1.1.1               782b4aca1228        7 weeks ago         68.51 MB  
  14. ubuntu                  14.04               b72889fa879c        12 weeks ago        188 MB  
  15. registry                2.3.0               5eaced67751b        4 months ago        165.7 MB  
  16.   
  17.   
  18.   
  19.   
  20. root@controller:~# docker ps -a  
  21. CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                    NAMES  
  22. cf11bef3fc9d        registry:2.3.0      "/bin/registry /etc/d"   About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp   registry  

接下来我们需要通过http://192.168.12.132:5000/v2来判断registry服务是否正常启动,如果出现“{}”既可以说明服务运行正常。



注意:如果你先进行docker  pull registry操作,系统会下载一个latest版本的镜像,然后通过同样的命令启用:docker run -d -v /root/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest,虽然实例启动了,但是服务还是不能正常运行。


3、我们可以看到,132本地镜像有一个ubuntu镜像,我们修改下相关的tag,让他的标记更加的明显

[html]  view plain  copy
  1. root@controller:~# docker tag ubuntu:14.04 192.168.12.132:5000/ubuntu:14.04  
  2. root@controller:~# docker images  
  3. REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE  
  4. swarm                        latest              a180b24e38ed        4 weeks ago         19.34 MB  
  5. docker/ucp-proxy             1.1.1               354629dc8529        5 weeks ago         17.43 MB  
  6. docker/ucp-cfssl             1.1.1               3b3684098101        5 weeks ago         53.61 MB  
  7. docker/ucp                   latest              40fe8a8c618e        5 weeks ago         20.49 MB  
  8. docker/ucp-auth              1.1.1               7b0a22fd86df        5 weeks ago         26.82 MB  
  9. docker/ucp-controller        1.1.1               c1ada015cdb4        5 weeks ago         26.23 MB  
  10. docker/ucp-etcd              1.1.1               cb7711a7fea2        5 weeks ago         35.31 MB  
  11. docker/ucp-compose           1.1.1               c6565efb4f69        5 weeks ago         58.61 MB  
  12. docker/ucp-auth-store        1.1.1               4fbf8982055b        5 weeks ago         57.78 MB  
  13. docker/ucp-swarm             1.1.1               7a1bcedacf02        5 weeks ago         19.34 MB  
  14. docker/ucp-dsinfo            1.1.1               782b4aca1228        7 weeks ago         68.51 MB  
  15. 192.168.12.132:5000/ubuntu   14.04               b72889fa879c        12 weeks ago        188 MB  
  16. ubuntu                       14.04               b72889fa879c        12 weeks ago        188 MB  
  17. registry                     2.3.0               5eaced67751b        4 months ago        165.7 MB  
  18. registry                     latest              bca04f698ba8        5 months ago        422.9 MB  
我们看到ubuntu的镜像已经修改了。


4、将ubuntu镜像push到镜像仓库中

[html]  view plain  copy
  1. root@controller:~# docker push 192.168.12.132:5000/ubuntu:14.04  
  2. The push refers to a repository [192.168.12.132:5000/ubuntu]  
  3. 5f70bf18a086: Pushed  
  4. f75f146a5022: Pushed  
  5. 711b0bd2cb6a: Pushed  
  6. 595d1d53a534: Pushed  
  7. 14.04: digest: sha256:f92c2bec713942c44219e8bd513c255543c9acda764ccabbe3f940eca696e97e size: 1151  

5、还记得我们已经将镜像仓库的目录挂载到本地/root/registry,我们查看相关目录,查看一下相关的镜像文件。

[html]  view plain  copy
  1. root@controller:~# cd /root/  
  2. .cache/   registry/  
  3. root@controller:~# cd /root/registry/docker/registry/v2/  
  4. blobs/        repositories/  
  5. root@controller:~# cd /root/registry/docker/registry/v2/repositories/  
  6. root@controller:~/registry/docker/registry/v2/repositories# ls  
  7. ubuntu  

我们看到,ubuntu镜像文件已经存储到该目录下



6、接下来,我们只需要确认其他容器服务器的/etc/default/docker文件添加registry可信选项,我们就可以通过docker pull命令下载相关镜像了。

[html]  view plain  copy
  1. root@docker1:~# docker images  
  2. REPOSITORY          TAG                 IMAGE ID            CREATED  
  3. swarm               latest              a180b24e38ed        4 weeks ago  
  4. root@docker1:~# docker pull 192.168.12.132:5000/ubuntu:14.04  
  5. 14.04: Pulling from ubuntu  
  6.   
  7. 759d6771041e: Pull complete  
  8. 8836b825667b: Pull complete  
  9. c2f5e51744e6: Pull complete  
  10. a3ed95caeb02: Pull complete  
  11. Digest: sha256:f92c2bec713942c44219e8bd513c255543c9acda764ccabbe3f940eca696e97e  
  12. Status: Downloaded newer image for 192.168.12.132:5000/ubuntu:14.04  
  13. root@docker1:~# docker images  
  14. REPOSITORY                   TAG                 IMAGE ID            CREATED  
  15. swarm                        latest              a180b24e38ed        4 weeks ago  
  16. 192.168.12.132:5000/ubuntu   14.04               b72889fa879c        12 weeks ag  

当然,都是本地连接,下载速度自然可以得到保障。


上图我们也可以看到,我们的镜像文件可以存储在本地,也可以通过分布式存储软件,我们可以将镜像存储在glusterFS,Ceph,或者OpenStack的Swift。



版权声明: 专注于"GIS+"前沿技术的研究与交流,将云计算技术、大数据技术、容器技术、物联网与GIS进行深度融合,探讨"GIS+"技术和行业解决方案;文章允许转载,但必须以链接方式注明源地址,否则追究法律责任! https://blog.csdn.net/chinagissoft/article/details/51863895
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值