• docker创建私有仓库及存储image


           Docker官方的Docker hub尽管提供了有非常多image,也基本上包括了我们须要使用的,可是其訪问起来比較慢。假设自己要定制image。多台server之间的共享使用此image非常不方便。这个时候我们就迫切须要一个本地的私有仓库了。

    以下的图说明了Docker私有仓库的作用。


          Docker私有仓库能够通过docker-registry项目来实现,通过http服务来上传下载。docker-registry在Docker hub上已有现成的image。

      $ docker search registry

         选择第1个。将其从Docker hub上down下来(最好带tag,不然会将全部的tag都down下来)。

      $ docker pull registry
         这个下载的过程有点长,耐心等待一下。O(∩_∩)O哈哈~。

      $ docker images
    
         registry镜像下下来后。通过以下的命令启动,并将registry的容器存储images的文件夹映射到宿主server的/opt/docker/registry文件夹。


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

         启动以后在浏览器中输入http://主机IP:5000或者http://主机IP:5000/v1/search。假设有显示就说明Docker私有仓库已经建好了。下一步将本地的images push到Docker私有仓库


         现将本地的image打一个tag,新image名称必须带有"主机IP:5000"。例如以下(我这里用127.0.0.1仅仅是举例)。

    REPOSITORY               TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    registry                 latest              5562556b14f9        8 days ago          422.9 MB
    127.0.0.1:5000/registry  latest              5562556b14f9        8 days ago          422.9 MB
    
         假设缺少上面这一步。直接push image,会出现例如以下错误。

    [docker@docker1 ~]$ docker push registry
    The push refers to a repository [registry] (len: 1)
    Sending image list
    2014/10/27 15:48:25 Error: Status 403 trying to push repository registry: Account is not Active

           运行例如以下push命令后。能够在http://主机IP:5000/v1/search看到存储到Docker私有仓库的信息。

      $ docker push 127.0.0.1:5000/registry
          下次能够通过pull命令下载到其它server上,那可就快多了。

    pull的时候记得带"主机IP:5000",不然还是去Docker hub上下载而不是私有仓库下载,例如以下命令。

      $ docker pull 127.0.0.1:5000/registry

          到此。私有仓库存取image就能够了。


          假设是save/load的image。会出现以下的错误。对于这种image。最好又一次build对应的Dockerfile。


    [docker@docker1 ~] $docker push 127.0.0.1:5000/nexus
    The push refers to a repository [127.0.0.1:5000/nexus] (len: 1)
    Sending image list
    Pushing repository 127.0.0.1:5000/nexus (1 tags)
    
    2014/10/27 14:50:37 HTTP code 400 while uploading metadata: {"error": "Missing key `id' in JSON"}


          docker1.3.0以后的版本号。增加了认证机制,docker pull & push会报例如以下错误:

    [docker@docker1 ~]$ docker push 127.0.0.1:5000/registry
    2014/12/02 11:33:04 Error: Invalid registry endpoint https://127.0.0.1:5000/v1/: Get https://127.0.0.1:5000/v1/_ping: EOF. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 127.0.0.1:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/127.0.0.1:5000/ca.crt
    
          使用registry的server和client启动docker时都须要加上"--insecure-registry"參数,pull和push才可正常操作。例如以下命令(ip都是registry所在server的ip地址)。


    [docker@docker1 ~]$ service docker stop
    [docker@docker1 ~]$ nohup docker -H unix:///var/run/docker.sock --insecure-registry 127.0.0.1:5000 -d &
    
    

  • 相关阅读:
    Bootstrap3.0学习第八轮
    内存管理相关的信息
    SVN merge
    Asp.Net MVC 3
    formValidator
    jquery 分页控件2
    从零开始学C++之STL(四):算法简介、7种算法分类
    (Java实现) 过河卒
    (Java实现) N皇后问题
    (Java实现) N皇后问题
  • 原文地址:https://www.cnblogs.com/mthoutai/p/6812871.html
Copyright © 2020-2023  润新知