美文网首页
docker 私有仓库搭建

docker 私有仓库搭建

作者: 金刚_30bf | 来源:发表于2018-06-28 15:03 被阅读0次

    版本: Docker version 18.03.1-ce, build 9ee9f40
    参考官方文档:
    https://docs.docker.com/samples/library/registry/#run-a-local-registry-quick-version
    https://docs.docker.com/registry/deploying/
    https://docs.docker.com/registry/insecure/

    下载registry镜像

    docker pull registry
    去海外默认地址下载, 网上说有墙,但我用着是没墙,可以下载。

    启动镜像

    1. 创建宿主机保存镜像的目录
      mkdir -p /root/my_docker_registry

    2. 启动 服务
      docker run -d -p 5000:5000 --restart always -v /root/my_docker_registry:/var/lib/registry registry

    [root@node205 my_docker_registry]# docker ps -a
    CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                      PORTS                    NAMES
    5b0159edad4b        registry                     "/entrypoint.sh /etc…"   6 seconds ago       Up 4 seconds                0.0.0.0:5000->5000/tcp   eloquent_poincare
    
    

    可以使用 docker inspect 5b0159edad4b 查看该registry的详细信息。

    验证及配置

    1. 直接push一个镜像
    [root@node205 my_docker_registry]# docker push node205:5000/hello-world
    The push refers to repository [node205:5000/hello-world]
    An image does not exist locally with the tag: node205:5000/hello-world
    

    需要先打tag 。

    1. 打tag 后push
    docker tag hello-world  node205:5000/hello-world
    
    [root@node205 my_docker_registry]#  docker push node205:5000/hello-world
    The push refers to repository [node205:5000/hello-world]
    Get https://node205:5000/v2/: Gateway Timeout 
    
    或者 
    
    [root@node205 docker]# docker push 10.30.16.205:5000/hello-world
    The push refers to repository [10.30.16.205:5000/hello-world]
    2b8cbd0846c5: Retrying in 1 second 
    received unexpected HTTP status: 501 Unsupported method ('POST')
    

    报错原因: 私有仓库默认使用 https , 需要配置为使用http ; 另外,本环境使用了外网代理, 发现连接私有仓库会通过代理,需要配置不走代理。

    参见官网: https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry
    https://docs.docker.com/config/daemon/systemd/#httphttps-proxy

    • /etc/docker/daemon.json 编辑
    {
      "insecure-registries" : ["myregistrydomain.com:5000"]
    }
    

    (通过日志发现,当启用insecure-registries时,会先尝试https ,不通,再使用http进行处理。 生产环境不建议使用之。)

    • 配置本地地址不走代理
      编辑/etc/systemd/system/docker.service.d/http-proxy.conf 和 /etc/systemd/system/docker.service.d/https-proxy.conf
    [Service]    
    Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
    
    [Service]    
    Environment="HTTPS_PROXY=https://proxy.example.com:443/" "NO_PROXY=localhost,127.0.0.1,node205"
    
    • 重启服务
    systemctl daemon-reload
    
    systemctl restart docker
    

    网页验证

    http://10.30.16.205:5000/v2/_catalog

    可以看到 {"repositories":["hello-world"]}

    其他节点配置使用

    1. 配置代理中增加NO_PROXY, 同master上配置

    2. 配置daemon.json ,同master上配置

    3. 使用 docker pull 或push 从私有仓库中下载或上传

    相关文章

      网友评论

          本文标题:docker 私有仓库搭建

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