如何利用registry镜像,自建docker镜像hub服务节点?
发布于 作者:苏南大叔 来源:程序如此灵动~正常情况下来说,docker
的镜像都存在hub
节点里面。那么,你有没有想过,自己搭建一个hub
节点服务呢?可以用于存储自己独有的docker
镜像。
本文中,苏南大叔要描述的就是:如何利用官方提供的registry
这个docker
镜像,搭建hub
服务,进而管理自己的docker
镜像。注意:本方案有些天然的缺陷,缺少权限验证的部分,具体请参见文末文字。
下载registry
本地搭建镜像存储服务器的步骤如下,第一步就是下载个docker
镜像registry
。并把它run
起来。registry
是个官方的docker
镜像,用docker
镜像来管理各种镜像,也是很有docker
特色的。
docker pull registry
设置端口
拉取镜像后,需要设置设置registry
相关参数就行了。需要设置的参数,主要有:一个是端口5000
,另外一个是镜像的存储目录。关于容器内的目录/var/lib/registry
,苏南大叔把它映射为宿主机上的目录/docker/images
。
下面命令中的hub
字样,是自定义的容器名称。大家可以自行替换为您想要的名字。
docker run -d --name hub -p 5000:5000 -v /docker/images:/var/lib/registry registry
查看接口url
如果一切顺利的话,那么宿主机上的相关接口url可以这样查看,如下:
http://<domain>:5000/
http://<domain>:5000/v2/
http://<domain>:5000/v2/_catalog
不过这几个地址url,也是没有什么大的用途的。如果这个registry
里面没有存放镜像的话,这几个url的内容也就是个空白页面。不过,这2个url可以用于验证:hub
服务是否正常。
镜像改名及推送
因为大家都知道,默认情况下,镜像的名字实际上就是镜像地址。那么对于准备提交到hub
的镜像来说,首先需要操作的就是:改名。
需要注意的就是:127.0.0.1:5000/test1
这个repo
,比如使用127.0.0.1:5000
。后面的test1
是自己可以自定义的repo
名字。
使用的命令是:
docker tag <image_id> <repo>:<tag>
docker push <repo>
docker push <repo>:<tag>
比如,可以这样操作一个id
为db06e6d5ab99
的镜像,repo
地址我们改为:127.0.0.1:5000/test1
这个地址。tag
设置为0.1
。
docker tag db06e6d5ab99 127.0.0.1:5000/test1:0.1
docker push 127.0.0.1:5000/test1
本地镜像文件
在本地,可以查看镜像的文件。其中,宿主机上的路径/docker/images/
是用来存放镜像文件的。大家可以对比docker save
操作的tar
包,可以查看这个目录,加深一下理解。
目录如下:
/docker/images/docker/registry/v2
,/docker/images/docker/registry/v2/repositories/test1
这个知识点,大家可以参考苏南大叔提供的docker save
相关内容。
镜像拉取
在可以访问这个hub
的其它机器上面,就可以使用docker pull
功能,拉取存放在hub
中的镜像了。
docker pull 127.0.0.1:5000/test1:0.1
总结
这种registry
方式下,有个不太好的地方就是:没有权限控制。所有的镜像都是直接提交或者下载的。那么如何解决这个问题呢?请参见苏南大叔的后续docker
相关经验文章。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
留个言~