本文共 2151 字,大约阅读时间需要 7 分钟。
本篇来介绍如何搭建自己的Docker registry,用来存储和分发自己私人的镜像文件。前面一篇使用docker push默认是发布镜像到hub.docker.com这个公有的镜像站点,这篇主要介绍私有镜像站点的在本地的搭建过程。
准备第二个Linux虚拟机
前面我们只准备了一台linux虚拟机用来练习和学习Docker,现在重新克隆一台虚拟机,这样新的虚拟机就不再需要安装docker环境了。克隆完了,两台虚拟机都开机,保证IP地址是不一样的就行。例如,我这里有一台192.168.24.128是我用来学习docker的虚拟机,第二台IP是192.168.24.129是我克隆出来准备做私有的registry服务。
拉取docker registry镜像
由于我是克隆出来机器,里面安装了docker,我们先启动docker服务,然后使用docKer pull registry拉取一个镜像到本地。
看看这个镜像多大
为了测试,我这台机器只留registry功能,我利用docker image rm 或者docker rmi命令删除其他不相干的镜像。
启动registry
启动registry实际上就是启动一个容器,这个registry其实和hub.docker.com是一样的功能,只不过这个私有的registry是供给公司内部使用,不对外访问罢了。使用下面的命令就启动了registry服务(运行在一个容器中)。
上面可以看到两个端口都是5000,简单说一下,一个是linux虚拟机也就是0.0.0.0:5000,这个5000是这个虚拟机本身的端口,第二个是5000是这个registry容器里的端口是5000. 以后再学习docker网络这块要学习这些。我们要明白,知道了一个机器IP和程序的端口号,就能在网络里访问这个程序的服务。
验证两台机器网络是否连接
我们有两台linux机器,第一个要验证虚拟机24.128是否能ping 24.129
接下来验证registry这台机器提供的5000端口是否可用。如果没有安装telnet组件,可以使用yum install –y telnet来安装。
如果出现这个,说明24.129这台机器提供的registry服务是可用的。
发布镜像到私有registry
这里,还是使用我们在原来24.128这台机器上的hello-docker的例子来build 一个image,先通过docker file build出来,然后使用push命令
这次使用docker build命令和之前不一样,是不是,之前在tag这里填写的参数是我的hub.docker.com的用户ID, 现在我们搭建了私有的镜像仓库,这个tag就要写成192.168.24.129:500了,这个要注意下。
接下来使用docker push 来看看效果
这个报错什么意思呢,字面意思是一个HTTP协议的服务器给了一个HTTP协议响应到一台HTTPS协议的客户端,意思是服务器是HTTP协议,客户端是HTTPS协议,这个是被任务我们私有的registry是不可信任的。接下来还需要一个步骤来解决这个报错。
第一在目录 /etc/docker下编辑一个daemon.json文件
使用vi或者vim(管理员权限)打开,打开内容是如下,这个内容是我们前面介绍如何改成中国地区的docker镜像站点的配置。
我们修改内容如下
{ "registry-mirrors": ["https://registry.docker-cn.com"], "insecure-registries":["192.168.24.129:5000"]}
保存退出,然后执行再编辑一个文件,让这个修改永久有效。
我们编辑vim /lib/systemd/system/docker.service这个文件,添加一下红圈这一行,让每次docker服务重启之后都去加载/etc/docker/daemon.json文件
保存退出,执行sudo service docker restart命令,然后执行docker push试一下
看到Pushed,说明这个镜像发布成功,由于没有UI界面,我们怎么样去判断确实发布到了24.129这台机器上呢?
打开浏览器,输入地址 ,打开docker registry 的API文档页面。当前页面搜索Listing Image Tags,查询到这个API。
这里参数name就是我们的image的名称192.168.24.129:5000/hello-docker中的hello-docker,
下面我们在浏览器发送这个请求试试,看看什么结果。
如果要查询全部pushed的镜像,我们可以输入这个API。
关于介绍如何搭建本地私人的docker registry服务就介绍到这里。这篇,如果你们公司需要你研究docker,并要求使用docker,你肯定要去搭建一个私有的docker registry服务。如果要管理registry,那么就必要去学习registry的一些常用API。作为docker基础,学习到如何搭建服务就可以,可以跳过学习这些API文档。
转载地址:http://kkows.baihongyu.com/