Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6266915
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

分类: 虚拟化

2017-03-08 06:32:20

http://www.cnblogs.com/xcloudbiz/articles/5500578.html

和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库。使用私有仓库有许多优点:

一、节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;

二、提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。

接下来我们就大致说一下如何在本地搭建私有仓库。

环境准备

环境:两个装有的Ubuntu虚拟机
虚拟机一:192.168.112.132 用户开发机
虚拟机二:192.168.112.136 用作私有仓库

此处我们准备了两个虚拟机,分别都安装了Docker,其中132机器用作开发机,136机器用作registry私有仓库机器。环境准备好之后接下来我们就开始搭建私有镜像仓库。

搭建私有仓库

首先在136机器上下载registry镜像

  1. $ sudo docker pull registry  

下载完之后我们通过该镜像启动一个容器

  1. $ sudo docker run -d -p 5000:5000 registry  

默认情况下,会将仓库存放于容器的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器的/tmp/registry下,如下:

  1. $ sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry  


可以看到我们启动了一个容器,地址为:192.168.112.136:5000

接下来我们就要操作把一个本地镜像push到私有仓库中
在132机器下pull一个比较小的镜像来测试(此处使用的是busybox)

  1. $ sudo docker pull busybox  

 

接下来修改一下该镜像的tag

  1. $ sudo docker tag busybox 192.168.112.136:5000/busybox  


接下来把打了tag的镜像上传到私服

  1. $ sudo docker push 192.168.112.136:5000/busybox  


可以看到push失败,具体结果如下:

2015/01/05 11:01:17 Error: Invalid registry endpoint Get dial tcp 192.168.112.136:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 192.168.112.136:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/192.168.112.136:5000/ca.crt 

因为Docker从1.3.X之后默认docker registry使用的是https,所以当用docker pull命令下载远程镜像时,如果远程docker registry是非https的时候就会报上面的错误。

为了解决这个问题需要在启动docker server时增加启动参数

Centos下:在/etc/sysconfig/docker文件添加以下选项:

other_args='--insecure-registry 192.168.112.136:5000'

OPTIONS='--selinux-enabled --insecure-registry 192.168.112.136:5000'



ubuntu下:
修改docker启动配置文件(此处是修改132机器的配置)
在其中增加DOCKER_OPTS="--insecure-registry 192.168.112.136:5000"如下所示:

修改完之后,重启Docker服务

  1. $ sudo restart docker  


重启完之后我们再次运行推送命令,把本地镜像推送到私有服务器上

  1. $ sudo docker push 192.168.112.136:5000/busybox  


可以看到镜像已经push到私有仓库中去了,接下来我们删除本地镜像,然后从私有仓库中pull下来该镜像

删除了本地镜像,然后我们从私有镜像仓库中下载该镜像

  1. $ sudo docker pull 192.168.112.136:5000/busybox  


好了,到此本地搭建registry私有仓库就完结了,如有任何问题欢迎指正

阅读(1032) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~