zoukankan      html  css  js  c++  java
  • docker —— 私有仓库搭建及认证 (转发)

    docker私有仓库搭建及认证

     

    什么是docker?

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

    再具体的请自行百度~

    命令是红字,配置是绿字,注释和其他为黑色字体。现在让我们来安装吧

    服务器主机名及IP地址:

    192.168.110.92 docker-registry

    192.168.110.22 docker-gitlab

    系统版本:

    CentOS Linux release 7.2.1511 (Core)

    docker版本:

    Docker version 1.12.6, build c4618fb/1.12.6

    docker仓库版本:

    registry-2.4.1

    docker认证版本:

    docker_auth:1

    基础优化~略

    关闭selinux:
    sed -i s#'SELINUX=enforcing'#'SELINUX=disabled'#g /etc/selinux/config
    setenforce 0

    关闭防火墙:

    systemctl stop firewalld

    systemctl disable firewalld

    安装源:

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

    安装并启动docker:

    yum install docker docker-registry -y

    systemctl enable docker

    systemctl start docker

    私有镜像库和认证搭建:

    下载镜像:

    docker pull registry 

    docker pull docker_auth:1 

    打标记:

    docker tag registry  192.168.110.92:5000/registry:2.4.1

    docker tag docker_auth:1  192.168.110.92:5000/docker_auth

    修改docker文件 加一行--insecure-registry 192.168.110.92:5000

    vim /etc/sysconfig/docker

    # /etc/sysconfig/docker

    # Modify these options if you want to change the way the docker daemon runs

    OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry 192.168.110.92:5000'

    if [ -z "${DOCKER_CERT_PATH}" ]; then

        DOCKER_CERT_PATH=/etc/docker

    fi

    创建目录并进入:

    mkidr /data/auth_server/ssl/ -p                       ##用于存放证书

    mkidr /data/auth_server/config/ -p                    ##配置文件

    cd /data/auth_server/ssl/

    证书生成(server.key,server.pem和server.crt):

    openssl genrsa -out server.key 2048

    openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 3650 -out server.pem

    cat server.pem | tee -a server.crt

    拷贝:

    scp server.crt 192.168.110.22:/etc/docker/certs.d/   ###scp 到其他服务器用于测试从内部仓库下载

    现在创建配置文件:

    cd /data/auth_server/config

    vi auth_config.yml

    server:

      addr: ":5001"

      certificate: "/ssl/server.pem" 

      key: "/ssl/server.key"

    token:

      issuer: "Auth Service"  # Must match issuer in the Registry config.

      expiration: 900

    users:

      # Password is specified as a BCrypt hash. Use htpasswd -B to generate.

      "admin":

        password: "$2y$05$LO.vzwpWC5LZGqThvEfznu8qhb5SGqvBSWY1J3yZ4AxtMRZ3kN5jC"                     #badmin

      "test":

        password: "123"  

    acl:

      - match: {account: "admin"}

        actions: ["*"]

        comment: "Admin has full access to everything."

      - match: {account: ""}

        actions: ["pull"]

        comment: "User "user" can pull stuff."

    回到家目录创建docker-compose配置文件
    cd && vi docker-compose.yml

    dockerauth:

      image: cesanta/docker_auth:1

      ports:

        - "5001:5001"

      volumes:

        - /data/auth_server/config:/config:ro

        - /var/log/docker_auth:/logs

        - /data/auth_server/ssl:/ssl

      command: /config/auth_config.yml

      restart: always

    registry:

      image: registry:2.4.1

      ports:

        - "5000:5000"

      volumes:

        - /data/auth_server/ssl:/ssl

        - /data/docker_registry/data:/var/lib/registry

        - /data/auth_server/config:/auth

        - /data/auth_server/ssl:/certs

      restart: always

      environment:

        - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt

        - REGISTRY_HTTP_TLS_KEY=/certs/server.key

        - REGISTRY_AUTH=token

        - REGISTRY_AUTH_TOKEN_REALM=https://192.168.110.92:5001/auth ###本机ip

        - REGISTRY_AUTH_TOKEN_SERVICE="Docker registry"

        - REGISTRY_AUTH_TOKEN_ISSUER="Auth Service"

        - REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE=/certs/server.pem

    启动并查看:

    docker-compose up -d  #-d后台启动

    docker-compose ps

          Name                     Command               State           Ports         

    -----------------------------------------------------------------------------------

    root_dockerauth_1   /docker_auth/auth_server / ...   Up      0.0.0.0:5001->5001/tcp

    root_registry_1     /bin/registry serve /etc/d ...   Up      0.0.0.0:5000->5000/tcp

    上传打完包的镜像到私有仓库:

    for n in `docker images |grep 192|awk '{print $1":"$2}'` ;do docker push $n;done

    验证镜像是否在镜像库(没有404就行):

    for YZ in `docker images|awk -F "[/ ]+" '{print $2}'|grep -v TAG`;do curl -v -X GET http://192.168.110.92:5000/v2/$YZ/tags/list ;done

    测试:

    192.168.110.22服务器执行:

    docker login 192.168.110.92:5000

    账号: admin      #auth_config.yml 配置的

    密码: badmin    #auth_config.yml配置的

    Login Succeeded        ##说明成功

    docker pull 192.168.110.92:5000/docker_auth        #不出意外的话应该是飞快的速度

    网上查资料+同事帮忙+自我实践,才弄出来,有问题及时联系我~

  • 相关阅读:
    精确覆盖DLX算法模板另一种写法
    Hdu3498-whosyourdaddy(精确覆盖模板题)
    精确覆盖DLX算法模板
    Object2Map
    Use ResourceBundle read properties file.
    Kendo UI Example(grid)
    Kendo 日期控件
    Spring mvc 中文乱码问题解决方法
    Thread communication java.util.concurrent.locks.Condition 用法(二)
    Thread communication java.util.concurrent.locks.Condition 用法(一)
  • 原文地址:https://www.cnblogs.com/panpanwelcome/p/13633818.html
Copyright © 2011-2022 走看看