美文网首页我爱编程
docker的企业级仓库管理harbor安装

docker的企业级仓库管理harbor安装

作者: xhz的个人小屋 | 来源:发表于2018-02-06 15:14 被阅读20次

    实验环境

    软件:
    Centos7.4
    harbor-1.2.2
    docker version 17.12.0-ce
    docker compose 1.17.1
    机器IP地址:
    172.16.10.65
    172.16.10.64

    软件下载地址:
    docker-compose下载:https://github.com/docker/compose/releases/
    harbor下载:https://github.com/vmware/harbor/releases
    使用harbor的离线下载包 harbor-offline-installer-v1.2.2.tgz

    实践(支持CA加密)

    1,解压harbor包

    tar xf harbor-offline-installer-v1.2.2.tgz
    

    2,进入文件夹

    [root@myregistry home]# ls harbor
    ca.crt  docker-compose.clair.yml   harbor_1_1_0_template  LICENSE  yourdomain.com
    ca.key  docker-compose.notary.yml  harbor.cfg             NOTICE   yourdomain.com.crt
    ca.srl  docker-compose.yml         harbor.v1.2.2.tar.gz   prepare  yourdomain.com.csr
    common  extfile.cnf                install.sh             upgrade  yourdomain.com.key
    [root@myregistry home]# cd harbor
    

    3,修改配置文件 harbor.cfg

    所需参数:
    • host:目标主机的主机名,用于访问用户界面和注册表服务。它应该是目标机器的IP地址或完全限定的域名(FQDN),例如192.168.1.10reg.yourdomain.com不要使用localhost127.0.0.1为主机名 - 注册表服务需要由外部客户端访问!
    • ui_url_protocol:(httphttps,默认为http)用于访问UI和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为https
    • db_password:用于db_auth的MySQL数据库的根密码。更改此密码以供任何生产使用!
    • max_job_workers :(默认值为3)作业服务中复制工作的最大数量。对于每个映像复制作业,工作人员将存储库的所有标记同步到远程目标。增加这个数字允许系统中有更多的并发复制作业。但是,由于每个工作人员消耗一定数量的网络/ CPU / IO资源,请根据主机的硬件资源,仔细选择此属性的值。
    • customize_crt:(打开关闭,默认打开打开此属性,准备脚本创建私钥和根证书,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为off
    • ssl_cert:SSL证书的路径,仅当协议设置为https时才应用
    • ssl_cert_key:SSL密钥的路径,仅当协议设置为https时才应用
    • secretkey_path:用于在复制策略中加密或解密远程注册表的密码的密钥路径。
    • log_rotate_count:日志文件在被移除之前被轮转log_rotate_count次。如果计数为0,则删除旧版本而不是旋转。
    • log_rotate_size:日志文件只有在长度大于log_rotate_size字节的情况下才会进行旋转。如果大小后面跟着k,则大小假定为千字节。如果使用M,则大小以兆字节为单位;如果使用G,则大小以千兆字节为单位。所以大小100,大小100k,大小100M和大小100G都是有效的。

    若只想配置http方式,则对于配置文件只需修改host为域名或者IP地址即可,跳过步骤4

    若想配置https访问则继续

    4,生成自己的CA证书,

    创建您自己的CA证书:

    openssl req \
        -newkey rsa:4096 -nodes -sha256 -keyout ca.key \
        -x509 -days 365 -out ca.crt
    

    生成证书签名请求:
    如果使用像reg.yourdomain.com这样的FQDN 连接注册表主机,则必须使用reg.yourdomain.com作为CN(通用名称)。否则,如果您使用IP地址连接您的注册表主机,CN可以是任何类似您的名字等等:

      openssl req \
        -newkey rsa:4096 -nodes -sha256 -keyout yourdomain.com.key \
        -out yourdomain.com.csr
    

    生成注册表主机的证书:
    如果您使用的是像reg.yourdomain.com这样的FQDN 来连接您的注册表主机,请运行以下命令以生成注册表主机的证书:

      openssl x509 -req -days 365 -in yourdomain.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out yourdomain.com.crt
    

    如果你使用的是IP,比如172.16.10.65连接你的注册表主机,你可以运行下面的命令:

      echo subjectAltName = IP:172.16.10.65 > extfile.cnf
    
      openssl x509 -req -days 365 -in yourdomain.com.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out yourdomain.com.crt
    

    获取crt和key文件之后可以将它们放在特定的目录,名称自拟:

    cp yourdomain.com.crt /home/registry/certs/domain.crt
    cp yourdomain.com.key /home/registry/certs/domain.crt
    

    编辑harbor.cfg,更新三个参数:

    ui_url_protocol = https
    
    ssl_cert = /home/registry/certs/domain.crt 
    ssl_cert_key = /home/registry/certs/domain.key
    

    5,执行install.sh程序

    [root@myregistry harbor]# ./install.sh
    

    加载过程需要稍等一会。
    6,启动harbor,

    [root@myregistry harbor]#  docker-compose up -d
    WARNING: The Docker Engine you're using is running in swarm mode.
    
    Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.
    
    To deploy your application across the swarm, use `docker stack deploy`.
    
    Creating network "harbor_harbor" with the default driver
    Creating harbor-log ... 
    Creating harbor-log ... done
    Creating harbor-adminserver ... 
    Creating harbor-db ... 
    Creating registry ... 
    Creating harbor-db
    Creating harbor-adminserver
    Creating harbor-adminserver ... done
    Creating harbor-ui ... 
    Creating harbor-ui ... done
    Creating harbor-jobservice ... 
    Creating harbor-jobservice
    Creating nginx ... 
    Creating nginx ... done
    

    注意

    1,修改配置文件和harbor重启
    修改配置文件完毕后,为Harbour生成配置文件:

      ./prepare
    

    如果Harbor已经在运行,请停止并删除现有的实例。您的图像数据保留在文件系统中

      docker-compose down  -v 
    

    -v表示删除容器对应的数据卷
    最后重启Harbour:

      docker-compose up -d
    

    2,登录方式

    1. 打开浏览器并输入地址,它应该显示Harbor的用户界面。

    2. 在具有Docker守护进程的机器上,确保选项“-insecure-registry”不存在,并且您必须将上述步骤中生成的ca.crt复制到/etc/docker/certs.d/reg.yourdomain.com(或您的注册表主机IP),如果该目录不存在,请创建它。如果您将nginx端口443映射到另一个端口,则应该创建目录/etc/docker/certs.d/reg.yourdomain.com:port(或您的注册表主机IP:端口)。
      登录上传image示例:

    [root@myregistry harbor]# docker login 172.16.10.65
    Username (admin): 
    Password: 
    Login Succeeded
    [root@myregistry harbor]# docker tag ubuntu 172.16.10.65/library/ubuntu
    [root@myregistry harbor]# docker pull 172.16.10.65/library/ubuntu
    Using default tag: latest
    latest: Pulling from library/ubuntu
    Digest: sha256:7c308c8feb40a2a04a6ef158295727b6163da8708e8f6125ab9571557e857b29
    Status: Image is up to date for 172.16.10.65/library/ubuntu:latest
    

    3,时间同步
    若client 和servie时间不同步则会发生下面问题

    [root@localhost guest]# docker login 172.16.10.65                                            Username: admin
    Password: 
    Error response from daemon: Get https://172.16.10.65/v2/: x509: certificate has expired or is not yet valid
    

    方法:
    同步时间

    ntpdate 1.cn.pool.ntp.org
    

    简单使用

    1,登录


    image.png

    2,创建用户


    image.png
    image.png

    3,添加项目


    image.png
    image.png

    参考文档:
    https://github.com/vmware/harbor/blob/master/docs/installation_guide.md

    相关文章

      网友评论

        本文标题:docker的企业级仓库管理harbor安装

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