参考连接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/nginx
和Mavan的管理同样,Dockers不只提供了一个中央仓库,同时也容许咱们使用registry搭建本地私有仓库。docker
使用私有仓库有许多优势:vim
接下来咱们就大体说一下如何在本地搭建私有仓库。安全
目前Docker Registry已经升级到了v2,最新版的docker已再也不支持v1。Registry v2使用Go语言编写,在性能和安全性上作了不少优化,从新设计了镜像的存储格式。此文档是在v1的基础上写的,若是须要安装registry v2,只需下载registry:2.2便可,或者能够下载后面的安装脚本运行安装。服务器
环境准备:网络
环境:两个装有Docker的CentOS 7.2 虚拟机性能
服务器1:192.168.68.14 ------用户开发机测试
服务器2:192.168.68.25 ------用做私有仓库优化
此处咱们准备了两个虚拟机,分别都安装了Docker,其中14机器用做开发机,25机器用做registry私有仓库机器。环境准备好以后接下来咱们就开始搭建私有镜像仓库。加密
首先在25机器上下载registry镜像
$ docker pull registry
下载完以后咱们经过该镜像启动一个容器
$docker run -d -p 5000:5000 registry
默认状况下,会将仓库存放于容器内的/tmp/registry目录下,这样若是容器被删除,则存放于容器中的镜像也会丢失,因此咱们通常状况下会指定本地一个目录挂载到容器内的/tmp/registry下,以下:
$docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry
能够看到咱们启动了一个容器,地址为:192.168.68.25:5000。
接下来咱们就要操做把一个本地镜像push到私有仓库中。首先在25机器下pull一个比较小的镜像来测试(此处使用的是busybox)。
$ sudo docker pull busybox
接下来修改一下该镜像的tag。
$ sudo docker tag busybox 192.168.112.136:5000/busybox
接下来把打了tag的镜像上传到私有仓库。
$ sudo docker push 192.168.68.25:5000/busybox
有报错,以下图:
由于Docker从1.3.X以后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,因此当与私有仓库交互时就会报上面的错误。为了解决这个问题须要在启动docker server时增长启动参数为默认使用http访问。修改docker启动配置文件(此处是修改25机器的配置)Centos7下配置文件地址为:/etc/sysconfig/docker,在其中增长--insecure-registry 192.168.68.25:5000以下所示:
$ vim /etc/sysconfig/docker
修改完以后,重启Docker服务。
$ service docker restart
重启完以后咱们再次运行推送命令,把本地镜像推送到私有服务器上。
$ docker push 192.168.68.25:5000/busybox
发现推送失败,报错以下:
解决思路:查看registry容器是否启动,docker ps 发现真没有启动,由于刚刚重启了docker服务,而后这个容器没有加到随docker启动而启动
步骤:docker start registry
再次推送:docker push 192.168.68.25:5000/busybox
成功如图:
能够看到镜像已经push到私有仓库中去了。
接下来咱们删除本地镜像,而后从私有仓库中pull下来该镜像。
docker rmi 192.168.68.25:5000/busybox
docker pull 192.168.68.25:5000/busybox
到此就搭建好了Docker私有仓库。上面搭建的仓库是不须要认证的,咱们能够结合nginx和https实现认证和加密功能。
若是咱们想要查询私有仓库中的全部镜像,使用docker search
命令:
# docker search registry_ip:5000/
若是要查询仓库中指定帐户下的镜像,则使用以下命令:
# docker search registry_ip:5000/account/
同时也能够指定镜像查询。
目前还没有找到方法删除私有仓库中的镜像,尝试过直接从仓库存储目录中删除镜像文件,可是并不能成功删除镜像。