转自:https://www.jb51.net/article/104784.htm
和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库。使用私有仓库有许多优点:
一、节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;
二、提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。
接下来我们就大致说一下如何在本地搭建私有仓库。
环境准备
环境:两个装有Docker的Ubuntu虚拟机
虚拟机一:192.168.112.132 用户开发机
虚拟机二:192.168.112.136 用作私有仓库
此处我们准备了两个虚拟机,分别都安装了Docker,其中132机器用作开发机,136机器用作registry私有仓库机器。环境准备好之后接下来我们就开始搭建私有镜像仓库。
搭建私有仓库
首先在136机器上下载registry镜像
1 |
|
下载完之后我们通过该镜像启动一个容器
1 |
|
默认情况下,会将仓库存放于容器的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器的/tmp/registry下,如下:
1 |
|
可以看到我们启动了一个容器,地址为:192.168.112.136:5000
接下来我们就要操作把一个本地镜像push到私有仓库中
在132机器下pull一个比较小的镜像来测试(此处使用的是busybox)
1 |
|
接下来修改一下该镜像的tag
1 |
|
接下来把打了tag的镜像上传到私服
1 |
|
可以看到push失败,具体结果如下:
2015/01/05 11:01:17 Error: Invalid registry endpoint https://192.168.112.136:5000/v1/: Get https://192.168.112.136:5000/v1/_ping: dial tcp 192.168.112.136:5000: connection refused.
解决方法:
添加以下2行
EnvironmentFile=-/etc/default/docker #添加配置文件(-代表ignore error)
找到 ExecStart
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.0.153:5000
红色字体为添加的
重启docker:
systemctl daemon-reload
systemctl restart docker
重启完之后我们再次运行推送命令,把本地镜像推送到私有服务器上。
docker push 192.168.0.136:5000/busybox
重启完之后我们再次运行推送命令,把本地镜像推送到私有服务器上
1 |
|
可以看到镜像已经push到私有仓库中去了,接下来我们删除本地镜像,然后从私有仓库中pull下来该镜像
删除了本地镜像,然后我们从私有镜像仓库中下载该镜像
1 |
|
好了,到此本地搭建registry私有仓库就完结了,如有任何问题欢迎指正。