zoukankan      html  css  js  c++  java
  • docker使用registry搭建本地私有仓库

    参考链接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/

    和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库。

    使用私有仓库有许多优点:

    1. 节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可;
    2. 提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用。

    接下来我们就大致说一下如何在本地搭建私有仓库。

    目前Docker Registry已经升级到了v2,最新版的docker已不再支持v1。Registry v2使用Go语言编写,在性能和安全性上做了很多优化,重新设计了镜像的存储格式。此文档是在v1的基础上写的,如果需要安装registry v2,只需下载registry:2.2即可,或者可以下载后面的安装脚本运行安装。

    环境准备:

    环境:两个装有Docker的CentOS 7.2 虚拟机

    服务器1:192.168.68.14    ------用户开发机

    服务器2:192.168.68.25    ------用作私有仓库

    此处我们准备了两个虚拟机,分别都安装了Docker,其中14机器用作开发机,25机器用作registry私有仓库机器。环境准备好之后接下来我们就开始搭建私有镜像仓库。

    搭建私有仓库

    首先在25机器上下载registry镜像

    $ docker pull registry
    

    下载完之后我们通过该镜像启动一个容器

    $docker run -d -p 5000:5000 registry
    

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

    $docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry 

      可以看到我们启动了一个容器,地址为:192.168.68.25:5000。


    测试

    接下来我们就要操作把一个本地镜像push到私有仓库中。首先在25机器下pull一个比较小的镜像来测试(此处使用的是busybox)。

    $ sudo docker pull busybox

    接下来修改一下该镜像的tag。

    $ sudo docker tag busybox 192.168.112.136:5000/busybox

    接下来把打了tag的镜像上传到私有仓库。

    $ sudo docker push 192.168.68.25:5000/busybox   
    有报错,如下图:

    因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。修改docker启动配置文件(此处是修改25机器的配置)Centos7下配置文件地址为:/etc/sysconfig/docker,在其中增加--insecure-registry 192.168.68.25:5000如下所示:

    $ vim /etc/sysconfig/docker


    修改完之后,重启Docker服务。
    $ service  docker restart
    

    重启完之后我们再次运行推送命令,把本地镜像推送到私有服务器上。

    $ docker push 192.168.68.25:5000/busybox
    发现推送失败,报错如下:


    解决思路:查看registry容器是否启动,docker ps 发现真没有启动,因为刚刚重启了docker服务,然后这个容器没有加到随docker启动而启动
    步骤:docker start registry
    再次推送:docker push 192.168.68.25:5000/busybox
    成功如图:
    可以看到镜像已经push到私有仓库中去了。

       接下来我们删除本地镜像,然后从私有仓库中pull下来该镜像。

       docker rmi 192.168.68.25:5000/busybox 

       docker pull  192.168.68.25:5000/busybox 

    到此就搭建好了Docker私有仓库。上面搭建的仓库是不需要认证的,我们可以结合nginx和https实现认证和加密功能。

    管理仓库中的镜像


    查询

    如果我们想要查询私有仓库中的所有镜像,使用docker search命令:

    # docker search registry_ip:5000/
    

    如果要查询仓库中指定账户下的镜像,则使用如下命令:

    # docker search registry_ip:5000/account/
    

    同时也可以指定镜像查询。

    删除

    目前尚未找到方法删除私有仓库中的镜像,尝试过直接从仓库存储目录中删除镜像文件,但是并不能成功删除镜像。

  • 相关阅读:
    Co.
    编程
    编程
    编程
    数据同步
    Co.
    Co.
    Co.
    Co.
    sss
  • 原文地址:https://www.cnblogs.com/tianfen/p/7427145.html
Copyright © 2011-2022 走看看