学科分类
目录
Docker

Docker Registry本地私有仓库搭建

相比Docker Hub而言,Docker Registry的功能就不够全面了,且需要自己手动配置、升级、维护和管理,所以说对于Docker镜像管理不太熟悉的人员推荐使用Docker Hub。如果开发者想要严格控制镜像存储位置,完全拥有自己的镜像分配渠道,或者要想将镜像存储和分布紧密嵌入到自己开发的程序中,则选择Docker Registry更适合。接下来,本小节将针对Docker Registry本地私有镜像仓库的管理进行详细讲解。

1.启动Docker Registry

使用Docker官方提供的Registry镜像就可以搭建本地私有镜像仓库,具体指令如下。

$ docker run -d \
 -p 5000:5000 \
 --restart=always \
 --name registry \
 -v /mnt/registry:/var/lib/registry \
 registry:2

在上述指令中,涉及到的参数说明如下:

● -d:表示在后台运行该容器;

● -p 5000:5000:表示将私有镜像仓库容器内部默认暴露的5000端口映射到宿主机的5000端口;

● --restart=always:表示容器启动后自动启动本地私有镜像仓库;

● --name registry:表示为生成的容器命名为registry;

● -v /mnt/registry:/var/lib/registry:表示将容器内的默认存储位置/var/lib/registry中的数据挂载到宿主机的/mnt/registry目录下,这样当容器销毁后,在容器中/var/lib/registry目录下的数据会自动备份到宿主机指定目录。

小提示:

Docker Registry目前有v1和v2两个版本,v2版本并不是v1版本的简单升级,而是在很多功能上都有了改进和优化。v1版本使用的是Python开发的,而v2版本是用go语言开发的;v1版本本地镜像仓库容器中数据默认挂载点是/tmp/registry,而v2版本的本地镜像仓库容器中数据默认挂载点是/var/lib/registry。

2.重命名镜像

之前推送镜像时,都是默认推送到远程镜像仓库,而本次是将指定镜像推送到本地私有镜像仓库。由于推送到本地私有镜像仓库的镜像名必须符合“仓库IP:端口号/repository”的形式,因此需要按照要求修改镜像名称,具体操作指令如下。

$ docker tag hellodocker:latest localhost:5000/myhellodocker

执行上述指令后,再次使用docker images命令查看现有镜像,如图1所示。

图1 镜像列表

从图1中可以看出,在仓库中多了一个名称为localhost:5000/myhellodocker的镜像。

3.推送镜像

本地私有镜像仓库搭建并启动完成,同时要推送的镜像也已经准备就绪后,就可以将指定镜像推送到本地私有镜像仓库了,具体操作指令如下。

$ docker push localhost:5000/myhellodocker

执行上述指令后,就可以完成镜像的推送。为了验证推送结果,我们可以在宿主机浏览器上输入地址http://localhost:5000/v2/myhellodocker/tags/list进行查看(使用该地址时注意镜像名称),其显示效果如图2所示。

图2 本地镜像仓库效果

从图2可以看出,浏览器已经显示出了相应信息,这说明镜像推送成功。

我们在推送镜像的过程中,还将数据映射到了本地磁盘,因此可以在本地磁盘的/mnt/registry/docker/registry/v2/repositories目录(即-v参数指定的宿主机数据映射位置)进行查看,如图3所示。

图3 本地镜像仓库效果

需要注意的是,如果通过浏览器访问发现推送成功,而本地磁盘位置却未发现对应的镜像,这就需要确认在启动本地镜像仓库时是否使用了-v参数,以及数据挂载位置是否正确。

点击此处
隐藏目录