Docker应用之利用Registry构建Docker私服

  Docker提供两种构建私服的方式:1、官方私服Docker Hub——registry;2、企业私服Harbor (goharbor.io)——harbor。本文仅介绍利用Registy构建私服,如下:

  1、基础镜像的操作就赘述了。pull/save/load三个命令执行就可以了,版本就1.6以上的自由选择了。

  2、运行容器

    docker run -itd -v /home/docker/data/registry:/var/lib/registry -p 5000:5000 --restart=always --name docker-registry registry

        

    注意,在运行的registry容器提供了数据卷参数。如果没有这个参数,推送的容器只会存在于容器内部;这会导致如果用户删除registry容器之后所有推送到该私有仓库的镜像都会被删除。所以为例存储镜像在实际应用中都会在启动命令中补充数据卷参数“-v <宿主机本地路径>:/var/lib/registry”——默认的镜像存储位置在/var/lib/registry。

  3、添加私服仓库地址

    由于默认访问协议为https,为了方便http协议也可以使用,增加配置文件/etc/docker/daemon.json,内容为{ "insecure-registries":["192.168.X.1XX:5000"] },并重启docker。

        

     通过docker info 可以观察到如下变化,说明仓库添加成功:

        

    通过客户端访问测试:curl -XGET http://192.168.X.1XX:5000/v2/_catalog

  4、上传镜像

    在向私有仓库推送镜像之前必须先使用docker tag来给即将推送的镜像打标签,因为在docker images所显示的镜像默认是从https://hub.docker.com/拉下来的,推送时如果不知道仓库地址,Docker会默认推送到https://hub.docker.com/。

      docker tag tomcat 192.168.X.1XX:5000/tomcat:lifish

      docker push 192.168.X.1XX:5000/tomcat:lifish

        

  5、测试:curl http://192.168.X.1XX:5000/v2/tomcat/tags/list

        

    将容器中tomcat镜像删除:

        

     再使用pull命令可以从本地参考拉取tomcat镜像:

        

   如果删除了registry容器,再启动容器还能从本地拉取镜像么?验证如下:

      

   可以看到以上镜像中没有zookeeper,那从本地拉取一个zookeeper,试试能不能成功:

      

  

      

 

 

        

 

posted on 2022-05-05 09:54  池塘里洗澡的鸭子  阅读(270)  评论(0编辑  收藏  举报