zoukankan      html  css  js  c++  java
  • docker私有仓库-harbor

    简单说一下Harbor的部署,踩了几个坑,参考同事大神的配置文件,一脸懵逼的部署出来了,其中部分内容参考了网上一些大神的文档,本篇文章仅供参考学习,如有雷同,万分荣幸。

    这篇文档仅限于centos7参考,掉坑概不负责

    一、Harbor官方文档

    1.部署及配置文档

    https://github.com/vmware/harbor/blob/master/docs/installation_guide.md  
    https://github.com/vmware/harbor/releases  #安装包地址,安装文档里面有提及

    2.用户使用指南

    https://github.com/vmware/harbor/blob/master/docs/user_guide.md

    3.Harbor各组件作用

    (这个是网上抄的【http://blog.csdn.net/u010278923/article/details/77941995】)

    Harbor主要组件包括proxy,他是一个nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载流量,上图中通过深蓝色先标识;ui提供了一个web管理页面,当然还包括了一个前端页面和后端API,底层使用mysql数据库;registry是镜像仓库,负责存储镜像文件,当镜像上传完毕后通过hook通知ui创建repository,上图通过红色线标识,当然registry的token认证也是通过ui组件完成;adminserver是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置,通过灰色线标识;jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log,上图通过紫色线标识;log是日志汇总组件,通过docker的log-driver把日志汇总到一起,通过浅蓝色线条标识。

    二、安装前提

    1.安装docker

    请参考【https://docs.docker.com/engine/installation/linux/docker-ce/centos/】

    2.安装docker-compose

    请参考【https://docs.docker.com/compose/install/】

    安装docker-compose 有两种方式
    1)pip install docker-compose (2)直接下载docker-compose

    三、部署Harbor

    1.下载Harbor安装包

    wget -C -t 10 -T 10 'https://storage.googleapis.com/harbor-releases/harbor-online-installer-v1.3.0.tgz'  #下载在线版

    2.配置相关参数

    (1)解压压缩包

    tar -xf harbor-online-installer-v1.3.0.tgz

    (2)配置相关参数

    harbor.cfg中更改的参数并不多,本人本次部署,主要遇到两中情况,在于认证模式(db_auth和ldap_auth),所以主要分别说明db_auth和ldap_auth的设置区别

    db_auth


    cd harbor/  #进入加压后的目录

    vim harbor.cfg  #配置初始参数
    hostname = reg.dingkai.cn  #配置harbor访问的域名,也可以用IP地址,但不建议用
    ui_url_protocol = https   #配置https方式访问,默认是http,如果一定要用http访问,可能会报错,解决方法可参考【https://github.com/vmware/harbor/blob/master/docs/user_guide.md#pulling-and-pushing-images-using-docker-client】,例如(vim /etc/docker/daemon.json,然后添加{"insecure-registries":["reg.dingkai.com:80"]})
    db_password = root123    #harbor数据库密码,可以使用默认的
    max_job_workers = 13    #最大线程数,可根据实际需求设置
    customize_crt = on    #默认开启,prepare脚本会创建用于生成/验证注册表令牌的私钥和根证书;如果设置成off,就要使用外部来源提供密钥和根证书
    ssl_cert = ./cert/dingkai.crt    #https的域名crt文件
    ssl_cert_key = ./cert/dingkai.key  #https的域名key文件
    secretkey_path = /opt/data    #secretkey文件存储值为加解密在副本策略中远端仓库的密码,长度为16位字符,生产中必需修改该值.
    admiral_url = NA    #当harbor独立部署时,设置为NA
    clair_db_password = Harbor.123  #
    log_rotate_count = 50  #日志相关配置,日志文件被删除钱乱转次数
    log_rotate_size = 200M  #日志规格大小
    ####邮件相关配置,不多说###
    email_identity =

    email_server = smtp.mydomain.com
    email_server_port = 25
    email_username = sample_admin@mydomain.com
    email_password = abc
    email_from = admin <sample_admin@mydomain.com>
    email_ssl = false
    email_insecure = false
    ########################

    harbor_admin_password = Harbor.123  #Harbor的登录密码
    auth_mode = db_auth  #认证模式,数据库认证

    ###本次使用数据库认证,ladp相关可以不用理会###
    #ldap_url = ldap://ldap.dingkai.cn:389
    #ldap_searchdn = cn=admin,dc=xiaoneng,dc=cn
    #ldap_search_pwd = Harbor.123
    #ldap_basedn = ou=Users,dc=dingkai,dc=cn
    #ldap_filter = (objectClass=person)
    #ldap_uid = cn
    #ldap_scope = 3
    #ldap_timeout = 5
    ###本次使用数据库认证,ladp相关可以不用理会###
    self_registration = off  #关闭用户注册
    token_expiration = 30  #token有效期
    project_creation_restriction = adminonly  #只允许管理员创建项目
    db_host = mysql  #harbor的mysql链接地址,使用默认就可以
    db_port = 3306  #harbor的mysql链接端口,使用默认就可以
    db_user = root  #harbor的mysql用户,使用默认就可以
    verify_remote_cert = off  #远程连接时不使用证书

    ######uaa认证模式,不使用不需要理会######
    uaa_endpoint = uaa.mydomain.org
    uaa_clientid= id
    uaa_clientsecret= secret
    uaa_ca_root= /path/to/uaa_ca.pem
    ######uaa认证模式,不使用不需要理会######

     使用ldap_auth是的habor.cfg配置

    cd harbor/  #进入加压后的目录
    
    vim harbor.cfg  #配置初始参数
    hostname = reg.dingkai.cn  #配置harbor访问的域名,也可以用IP地址,但不建议用
    ui_url_protocol = https   #配置https方式访问,默认是http,如果一定要用http访问,可能会报错,解决方法可参考【https://github.com/vmware/harbor/blob/master/docs/user_guide.md#pulling-and-pushing-images-using-docker-client】
    db_password = root123    #harbor数据库密码,可以使用默认的
    max_job_workers = 13    #最大线程数,可根据实际需求设置
    customize_crt = on    #默认开启,prepare脚本会创建用于生成/验证注册表令牌的私钥和根证书;如果设置成off,就要使用外部来源提供密钥和根证书
    ssl_cert = ./cert/dingkai.crt    #https的域名crt文件
    ssl_cert_key = ./cert/dingkai.key  #https的域名key文件
    secretkey_path = /opt/data    #secretkey文件存储值为加解密在副本策略中远端仓库的密码,长度为16位字符,生产中必需修改该值.
    admiral_url = NA    #当harbor独立部署时,设置为NA
    clair_db_password = Harbor.123  #
    log_rotate_count = 50  #日志相关配置,日志文件被删除钱乱转次数
    log_rotate_size = 200M  #日志规格大小
    ####邮件相关配置,不多说###
    email_identity = 
    
    email_server = smtp.mydomain.com
    email_server_port = 25
    email_username = sample_admin@mydomain.com
    email_password = abc
    email_from = admin <sample_admin@mydomain.com>
    email_ssl = false
    email_insecure = false
    ########################
    
    harbor_admin_password = Harbor.123  #Harbor的登录密码
    auth_mode = ldap_auth  #认证模式,数据库认证
    ldap_url = ldap://ldap.dingkai.cn:389    #ldap的URL
    ldap_searchdn = cn=admin,dc=xiaoneng,dc=cn  #链接LDAP/AD服务的用户域
    ldap_search_pwd = Harbor.123  #为上面设定的用户域设置密码
    ldap_basedn = ou=Users,dc=dingkai,dc=cn  #基础域为方便寻找一个用户e.g. ou=people,dc=dingkai,dc=com. 仅当 auth_mode is 设置为ldap_auth的时候才使用
    #ldap_filter = (objectClass=person)  #用户搜索过滤
    ldap_uid = cn   #该参数被用来匹配一个LDAP搜索的用户,可以使uid,cn,email或者其他的方式。
    ldap_scope = 3   #用户搜索范围, 1-LDAP_SCOPE_BASE, 2-LDAP_SCOPE_ONELEVEL, 3-LDAP_SCOPE_SUBTREE. Default is 3
    ldap_timeout = 5  #ldap超时时间
    self_registration = off  #关闭用户注册
    token_expiration = 30  #token有效期
    project_creation_restriction = adminonly  #只允许管理员创建项目
    db_host = mysql  #harbor的mysql链接地址,使用默认就可以
    db_port = 3306  #harbor的mysql链接端口,使用默认就可以
    db_user = root  #harbor的mysql用户,使用默认就可以
    verify_remote_cert = off  #远程连接时不使用证书
    
    ######uaa认证模式,不使用不需要理会######
    uaa_endpoint = uaa.mydomain.org
    uaa_clientid= id
    uaa_clientsecret= secret
    uaa_ca_root= /path/to/uaa_ca.pem
    
    ######uaa认证模式,不使用不需要理会######

    3.修改docker-compose.yml

    主要修改各容器服务的映射目录,将数据数据存储在数据盘的目录中

      log:
        volumes:
          - /opt/log/harbor/:/var/log/docker/:z    #各个容器服务的日志
          - ./common/config/log/:/etc/logrotate.d/:z 
    
      registry:
        volumes:
          - /opt/data/registry:/storage:z    #镜像的存储位置
          - ./common/config/registry/:/etc/registry/:z
      mysql:
        volumes:
          - /opt/data/database:/var/lib/mysql:z  #mysql的数据存放位置
      adminserver:
         volumes:
          - /opt/data/config/:/etc/adminserver/config/:z  #harbor配置文件存放位置
          - /opt/data/secretkey:/etc/adminserver/key:z    #远程秘钥位置,与harbor.cfg中secretkey_path对应
          - /opt/data/:/data/:z    #adminserver的数据存放位置
      ui:
        volumes:
          - /opt/data/secretkey:/etc/ui/key:z    #远程秘钥位置,与harbor.cfg中secretkey_path对应
          - /opt/data/ca_download/:/etc/ui/ca/:z  #不知道干啥的
          - /opt/data/psc/:/etc/ui/token/:z     #不知道干啥的
      jobservice:
        volumes:
          - /opt/data/job_logs:/var/log/jobs:z   #远程复制镜像的日志
          - ./common/config/jobservice/app.conf:/etc/jobservice/app.conf:z
          - /opt/data/secretkey:/etc/jobservice/key:z  ##远程秘钥位置,与harbor.cfg中secretkey_path对应

     4.启动服务

    ./install.sh 或 ./prepare 或 docker-compose up -d 都可以,为了尊重,本人第一次使用了 ./install.sh

    5.访问仓库

    在浏览器中输入[reg.dingkai.cn],网页将会自动跳转称https,并出现harbor的web管理界面

    ps:实际域名并不是 reg.dingkai.cn ,为了公司信息安全,所以 这里拿 reg.dingkai.cn,因为本屌没有什么秘密可泄露

    四、简单仓库操作

    1.登录

    这个不说了,输入账号和密码就可以登录了

    账号:admin

    密码:前面在harbor.cfg里面设置的

    2.创建项目

    3.push镜像

    push镜像的前提是必须先建立项目

    (1)首先登录
    docker login reg.dingkai.cn Username (admin): admin Password: Login Succeeded
    (2)push镜像
    docker tag ed05c8b25de6 reg.xiaoneng.cn/test/harbor-log:v1.3.0

    docker push reg.xiaoneng.cn/test/harbor-log:v1.3.0
    The push refers to repository [reg.xiaoneng.cn/test/harbor-log]
    2f80d33e3806: Layer already exists
    a6f957ab2e5e: Layer already exists
    1f7da27101b3: Layer already exists
    360c7adfc364: Layer already exists
    8587cdacda27: Layer already exists
    4bb9abea102e: Layer already exists
    49c2c19b0cd0: Layer already exists
    v1.3.0: digest: sha256:3a4d1a874ec6633d07e411d8283a61dc2b213bc967bff933549c75bac20a1eba size: 1777

    4.pull镜像

    docker pull reg.xiaoneng.cn/test/harbor-log:v1.3.0
    v1.3.0: Pulling from test/harbor-log
    Digest: sha256:3a4d1a874ec6633d07e411d8283a61dc2b213bc967bff933549c75bac20a1eba
    Status: Image is up to date for reg.xiaoneng.cn/test/harbor-log:v1.3.0

    五、删除镜像

    1.在web界面删除

    2.使用命令清理空间

    cd harbor
    
    docker-compose stop
    
    docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect --dry-run /etc/registry/config.yml
    
    docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect  /etc/registry/config.yml
    
    docker-compose start
  • 相关阅读:
    c#与科学计算之一:发掘 C# 特性赋予科学计算项目以威力(转贴)
    我使用使用vs2005的理由
    MapXtrem2004经典代码:asp.net鹰眼
    LaheyFujitsu Fortran v7.1初感受
    .NET平台上的编译器不完全列表(转别)
    iNET:Microsoft.NET的Java实现
    MapXtreme2004 & vs2005的官方回答
    告别一段时间
    MapXtreme2004 连接oracle spatial的问题(已解决)
    手工卸载.Net写的win服务
  • 原文地址:https://www.cnblogs.com/dingkailinux/p/8323866.html
Copyright © 2011-2022 走看看