如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

正常情况下来说,docker的镜像都存在hub节点里面。那么,你有没有想过,自己搭建一个hub节点服务呢?可以用于存储自己独有的docker镜像。

本文中,苏南大叔要描述的就是:如何利用官方提供的registry这个docker镜像,搭建hub服务,进而管理自己的docker镜像。注意:本方案有些天然的缺陷,缺少权限验证的部分,具体请参见文末文字。

如何利用registry镜像,自建docker镜像hub服务节点? - docker_images_many

如何利用registry镜像,自建docker镜像hub服务节点?(图3-1)

下载registry

本地搭建镜像存储服务器的步骤如下,第一步就是下载个docker镜像registry。并把它run起来。registry是个官方的docker镜像,用docker镜像来管理各种镜像,也是很有docker特色的。

docker pull registry

如何利用registry镜像,自建docker镜像hub服务节点? - docker-pull-registry

如何利用registry镜像,自建docker镜像hub服务节点?(图3-2)

设置端口

拉取镜像后,需要设置设置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>

比如,可以这样操作一个iddb06e6d5ab99的镜像,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

如何利用registry镜像,自建docker镜像hub服务节点? - docker_push

如何利用registry镜像,自建docker镜像hub服务节点?(图3-3)

本地镜像文件

在本地,可以查看镜像的文件。其中,宿主机上的路径/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相关经验文章。

  【docker】秘籍文章入口,仅传授于有缘之人  docker

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

打赏领取小礼物

打赏任意金额,发送截图到邮箱 shang@newsn.net ,可以领取精选回馈如下(任选其一):
  • 《前端视频教程大礼包》一套
  • 《wordpress精选皮肤》一套
  • 《dedecms织梦精选模板》一套
感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!

岁月静好

关注互联网发展,关注苏南大叔的《程序如此灵动~》博客
本文章来自:程序如此灵动~
博客地址为:https://newsn.net/
原文地址为:https://newsn.net/say/docker-registry.html
上一篇好文:如何查找特定功能的docker镜像?docker镜像hub地址大全
下一篇好文:如何利用Dockerfile,从零开始制作一个docker镜像?

如果您转载了本文章,出于某种原因,并没有注明作者或者出处。
在这里,苏南大叔也表示理解和支持。因为苏南大叔深深地明白:
您会在合适的时机,合适的地方,给本博客一个外链。对吧?
您若开心,便是安好!岁月静好,但愿世界和平,没有纷争~