美文网首页Docker的那些事儿
Docker的那些事儿—镜像的存储:私有仓库(16)

Docker的那些事儿—镜像的存储:私有仓库(16)

作者: sjyu_eadd | 来源:发表于2018-03-09 00:37 被阅读19次

    上一篇:Docker的那些事儿—镜像的存储:公有仓库(15)


    我们可以使用Docker官方提供了registry镜像搭建本地私有仓库。该镜像的使用和普通镜像无差异。下面我以两台docker host为例来讲解如何搭建:

    前提条件:已安装docker

    Ubuntu-001 用作私有仓库机器

    Ubuntu-002 用作客户机器

    1、Pull registry到本地

    root@Ubuntu-001:~# docker pull registry

    2、启动该镜像

    root@Ubuntu-001:~# docker run -d -p 5000:5000 registry

    默认情况下,仓库存将存放于容器内的/tmp/registry目录下,假如容器被删除,则存放于容器中的镜像也会丢失,因此我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,如下:

    root@Ubuntu-001:~#docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

    至此,私有仓库搭建完毕,我们可以看一下搭建的私有仓库能否使用

    容器已经运行起来了,并且在宿主机上观察实际上是起了一个进程。

    下面我们进验证能否push镜像到刚才搭建的私有仓库。

    接下来需要在Ubuntu-002上操作

    3、修改镜像的tag

    4、将ubuntu及httpd镜像push到仓库

    报错了,这是因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。

    为了解决这个问题:在启动docker server时,增加启动参数为默认使用http访问。增加insecure-registries 192.168.1.114:5000到docker启动配置文件/etc/docker/daemon.json中(注意该文件是json格式),并重启docker daemon: systemctl restart

    docker.service,如下所示:

    如果有多个仓库可以添加多个: "insecure-registries":["192.168.1.114:5000","192.168.1.115:5000"]

    可见push成功了。

    你可能看到为啥第一次push ubuntu镜像的时候,latest和14.04均push了,这是因为:docker push 10.140.160.250:5000/ubuntu是push REPOSITORY为10.140.160.250:5000/ubuntu里的所有images到仓库。

    5、验证从仓库pull镜像

    私有仓库镜像操作:

    1、验证仓库是否正常工作

    2、列出当前所有的镜像

    3、搜索指定镜像

    有兴趣的读者可以探讨下如下的问题:

    1、Push到私有仓库的镜像怎么删除?目前好像还比较麻烦,只能通过接口删除

    2、如何创建支持https的私有仓库?

    3、私有仓库可以像Docker Hub一样注册用户,便于管理?不然的话谁都可以push镜像岂不乱套了。


    下一篇:Docker的那些事儿—镜像管理(17)


    相关文章

      网友评论

        本文标题:Docker的那些事儿—镜像的存储:私有仓库(16)

        本文链接:https://www.haomeiwen.com/subject/fbuyfftx.html