zoukankan      html  css  js  c++  java
  • docker registry-v2 搭建私有仓库

    参考官方文档:https://docs.docker.com/registry/deploying/

    参考 :http://www.tuicool.com/articles/6jEJZj

    本例子使用两台centos7虚拟机作为测试
    node0:192.168.56.101
    node1:192.168.56.102
     
    使用域名搭建https的私有仓库
     
    1、node1作为私服服务器 配置 node0 node1 和主机的hosts映射
    192.168.56.102 lhdocker.com
     
    既然使用https,那么我们需要生成证书,本文讲解的是使用openssl自签名证 书,当然也可以使用诸如 Let’s Encrypt 等工具生成证书,首先在node1机 器上生成key:
     
    mkdir -p ~/registry/certs
    cd ~/registry/certs
    openssl genrsa -out lhdocker.com.key 2048
    生成密钥文件:
     
    openssl req -newkey rsa:4096 -nodes -sha256 -keyout lhdocker.com.key -x509 -days 365 -out lhdocker.com.crt
    输入信息
    Country Name (2 letter code) [XX]:86
    State or Province Name (full name) []:Beijing
    Locality Name (eg, city) [Default City]:Changping
    Organization Name (eg, company) [Default Company Ltd]:modprobe
    Organizational Unit Name (eg, section) []:modprobe
    Common Name (eg, your name or your server's hostname) []:lhdocker.com
    Email Address []:xxxxx@xxx.com
     
    这样自签名证书就制作完成了。
    由于是自签名证书,默认是不受Docker信任的,故而需要将证书添加到Docker 的根证书中,Docker在CentOS 7中,证书存放路径是 :
     
    node1 端:
    mkdir -p /etc/docker/certs.d/lhdocker.com
    cp lhdocker.com.crt /etc/docker/certs.d/lhdocker.com/
     
    node0端:
    scp root@lhdocker.com:/etc/docker/certs.d/lhdocker.com/lhdocker.com.crt /etc/docker/certs.d/lhdocker.com/
     
    拉取registry2 镜像
    docker pull registry:2

    启动registry2容器

      docker run -d -p 443:5000 --restart=always --name registry 
      -v `pwd`/certs:/certs 
      -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/lhdocker.com.crt 
      -e REGISTRY_HTTP_TLS_KEY=/certs/lhdocker.com.key 
      registry:2

    测试一下

    docker pull kitematic/hello-world-nginx
    docker tag kitematic/hello-world-nginx lhdocker.com/kitematic/hello-world-nginx
    docker push lhdocker.com/kitematic/hello-world-nginx

    如果成功,你会看到如下输出

    在node0上进行测试

    docker pull lhdocker.com/kitematic/hello-world-nginx

    到这里我们的docker私有仓库就搭建完成了

    这是没有认证方式的启动方式

    在很多场景下,我们需要用户登录后才能访问私有仓库,那么我们可以如下操作: 建立在上文生成证书,同时重启过Docker服务的前提下,我们讲解一下如何配置: 

    cd ~/registry/
    mkdir auth
    docker run --entrypoint htpasswd registry:2.2 -Bbn lihong 1233 > auth/htpasswd;

    启动registry容器的方式有一点区别

      docker run -d -p 443:5000 --restart=always --name registry 
      -v `pwd`/auth:/auth 
      -e "REGISTRY_AUTH=htpasswd" 
      -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" 
      -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd 
      -v `pwd`/certs:/certs 
      -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/lhdocker.com.crt 
      -e REGISTRY_HTTP_TLS_KEY=/certs/lhdocker.com.key 
      registry:2

    在执行push操作之前需要登录一下

     docker login lhdocker.com

    输入上面的用户和密码就可以了

     如果要停止registry服务,执行下面的命令就行了
    docker stop registry && docker rm -v registry
  • 相关阅读:
    内存优化
    OpenThreads库学习
    WPS/office使用技巧系列
    NB-IOT学习
    JSON和XML
    物联网平台学习
    .net提供的5种request-response方法一
    HTML5之IndexedDB使用详解
    jQuery圆形统计图实战开发
    用javascript将数据导入Excel
  • 原文地址:https://www.cnblogs.com/modprobe/p/6026033.html
Copyright © 2011-2022 走看看