zoukankan      html  css  js  c++  java
  • docker(五)--docker私有registry


    docker私有仓库

       使用互联网的registry的缺点是推送和下载image可能会比较慢,带宽如果不够大,可能要很久才能启动起来使用,很多时候需要制作私有的registry.

    Docker Registry分类

        Registry用于保存docker镜像,包括镜像的层次结构和元数据,用户可自建Registry,也可使用官方Docker Hub
    分类:
    - Sponsor Registry:第三方的registry,供客户和Docker社区使用
    - Mirror Registry: 第三方的registry,只让客户使用
    - Vendor Registry: 由发布Docker金翎奖的供应商提供registry
    - Private Registry: 通过设有防火墙的安全层的私胡实体提供的registry
    注: 自建仓库最好是生产环境所在的局域网内,才可以达到快的目的,在机房就在机房,如果在阿里云的,直接在它那里注册账号使用。

    docker-distribution

      docker-distribution可以实现快速创建私有registry,docker-distribution也可以运行在容器中使用,任何程序都可以,docker官方直接把regisrty做成image。而且最好是存储在VOLUMN,这样即使容器中止,registry也存在。可以使用网络存储方式。

    安装registry

    # yum install docker-registry   #安装的时候实际是docker-distribution包
    ============================================================================================
    Installing:
     docker-distribution            x86_64        2.6.2-2.git48294d9.el7    extras   3.5 M
    # rpm -ql docker-distribution
    /etc/docker-distribution/registry/config.yml
    /usr/bin/registry
    /usr/lib/systemd/system/docker-distribution.service
    /usr/share/doc/docker-distribution-2.6.2
    /usr/share/doc/docker-distribution-2.6.2/AUTHORS
    /usr/share/doc/docker-distribution-2.6.2/CONTRIBUTING.md
    /usr/share/doc/docker-distribution-2.6.2/LICENSE
    /usr/share/doc/docker-distribution-2.6.2/MAINTAINERS
    /usr/share/doc/docker-distribution-2.6.2/README.md
    /var/lib/registry
    # cat /etc/docker-distribution/registry/config.yml   配置文件
    version: 0.1
    log:
      fields:
        service: registry
    storage:
        cache:
            layerinfo: inmemory
        filesystem:
            rootdirectory: /var/lib/registry
    http:
        addr: :5000
    # systemctl start docker-distribution
    # ss -tnl |grep 5000
    LISTEN     0      128         :::5000                    :::*  

    把image推送到仓库中

       把myweb:v0.9推到registry,对于非docker hub的registry,往上面推镜像的时候必须指明服务器地址:端口,用户名等 

    # docker tag myweb:v0.9 172.27.0.3:5000/myweb:v0.9   #打标签,myweb:v0.9前面没有用户名表示是顶层仓库
    # docker image ls
    REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
    172.27.0.3:5000/myweb   v0.9                14f64a5b3a93        About an hour ago   16MB
    myweb                   v0.9                14f64a5b3a93        About an hour ago   16MB
    # docker push 172.27.0.3:5000/myweb:v0.9
    The push refers to repository [172.27.0.3:5000/myweb]
    Get https://172.27.0.3:5000/v2/: http: server gave HTTP response to HTTPS client
    
    报错:docker push时默认是基于https协议工作的,docker client是https, 而这里的本地服务器registry端是http

      解决办法: 将docker client配置改成insecure-registries

    # vim /etc/docker/daemon.json 
    
    {
      "registry-mirror": ["https://registry.docker-cn.com"],
        "bip": "172.17.0.1/24",
        "insecure-registries": ["172.27.0.3:5000"]
    }
    # systemctl restart docker
    再执行docker push,ok

    # ll /var/lib/registry/docker/registry/v2/repositories/
    total 4
    drwxr-xr-x 5 root root 4096 Feb 25 15:37 myweb

     从仓库中下载镜像

    首先修改docker client的insecure-registries,然后执行pull

    #  docker pull 172.27.0.3:5000/myweb:v0.9 

    Harbor

     Harbor是构建企业级私有docker镜像的仓库的开源解决方案(https://github.com/vmware/harbor),它是Docker Registry的更高级封装,用于存储和分发Docker镜像的企业级Registry服务器。它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能

    特性:

    - 支持多租户内容签署和校验
    - 安全和漏洞分析
    - 审计日志
    - 集成认证,基于角色访问控制
    - Image replication between instances
    - 可扩展API,WEB UI界面
    - 目前支持英语和中文

     harbor在部署时需要借助docker的编排工具 docker compose:https://docs.docker.com/compose/install/

    1.下载
       # wget https://github.com/goharbor/harbor/releases/download/v1.10.1/harbor-offline-installer-v1.10.1.tgz
       # tar xf harbor-offline-installer-v1.10.1.tgz -C /usr/local/

    2.编辑配置文件

    # vim /usr/local/harbor/harbor.yml
    hostname = node02.magedu.com 
    http:
      port: 80    #http端口. 如果 https 配置是打开的,那么默认会使用 https
    #https:   
    #  port: 443
    #  certificate: /your/certificate/path
    #  private_key: /your/private/key/path
    
    harbor_admin_password = Harbor12345
    database:
      password: root123
    data_volume: /data    

     3.运行

       # yum install -y docker-compose
       # cd /usr/local/harbor/
       # ./install.sh      # 完成创建和启动

    4. 在web界面操作 harbor, 用户名:admin 密码:Harbor12345

    5. 客户端推送测试

    1. 修改docker客户端为http方式(vim /etc/docker/daemon.json "insecure-registries":[" node02.magedu.com"]),重启docker

    2. 打标签,与仓库名称一致 docker tag myweb:v0.3-11 node02.magedu.com/devel/myweb:v0.3-11

    3. 登录harbor。docker login node02.magedu.com

    4. 推送镜像。docker push myweb:v0.3-11 node02.magedu.com/devel/myweb

    在生产环境使用时,还需要修改docker-compose.yml文件配置,定义数据存放位置

    cd /usr/local/harbor

    docker-compose pause   停止harbor服务,最好跟yml文件一个目录,能自动读取docker-compose.yml
    docker-compose unpause   启动harbor服务
    docker-compose scale   扩容

  • 相关阅读:
    vs2012下如何调试带输入参数的程序
    BASH-数据流重导向
    VS在连接期间的一个错误的处理:转换到 COFF 期间失败: 文件无效或损坏
    vmware中NAT配置不能上网的一个解决方案
    linux下查找
    系统及用户的bash环境配置 学习笔记
    linux中控制台字体和背景颜色配置
    bash中变量的巧用
    vi 常用指令存档
    vim指令示意图
  • 原文地址:https://www.cnblogs.com/xiaobaozi-95/p/12361944.html
Copyright © 2011-2022 走看看