• VMware Harbor 学习


    Harbor简介

    Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源Docker Distribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建和运行环境传输镜像的效率。Harbor支持安装在多个Registry节点的镜像资源复制,镜像全部保存在私有Registry中, 确保数据和知识产权在公司内部网络中管控。另外,Harbor也提供了高级的安全特性,诸如用户管理,访问控制和活动审计等。

    • 基于角色的访问控制 - 用户与Docker镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
    • 镜像复制 - 镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。
    • 图形化用户界面 - 用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。
    • AD/LDAP 支持 - Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。
    • 审计管理 - 所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
    • 国际化 - 已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。
    • RESTful API - RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。
    • 部署简单 - 提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。

    harbor实战

    基础安装

    harbor 需要依赖docker,compose工具,需要提前安装好

    yum install docker -y 
    systemctl start docker 
    yum install python-pip -y 
    pip install --upgrade pip 
    pip install docker-compose 
    pip install --upgrade docker-compose 
    docker-compose  -v
    # docker-compose version 1.11.1, build 7c5d5e4
    

    安装harbor并启动

    wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-offline-installer-v1.1.2.tgz
    tar -zxf harbor-offline-installer-v1.1.2.tgz 
    mv harbor /data/app/
    mkdir  /data/db/cert/ -p 
    # 上传ca和key证书
    ls /data/db/cert/
    www.biglittleant.cn.crt  www.biglittleant.cn.key
    

    如果不适用https上传证书,也可以不配置公钥

    cd /data/app/harbor
    cp harbor.cfg harbor.cfg.bak
    
    # vim harbor.cfg
    hostname = www.biglittleant.cn
    ui_url_protocol = https
    db_password = root123
    max_job_workers = 3 
    customize_crt = on
    ssl_cert = /data/db/cert/www.biglittleant.cn.crt 
    ssl_cert_key = /data/db/cert/www.biglittleant.cn.key
    secretkey_path = /data/db
    

    启动命令执行

    sed -i 's#/data#/data/db#g' docker-compose.yml 
    sh ./install.sh 
    

    配置文件解释

    • hostname:配置主机名称,不可以设置127.0.0.1,localhost这样的主机名,
    • ui_url_protocol:指定使用HTTP协议还是HTTPS协议。
    • Email settings:设置harbor的邮箱。
    • harbor_admin_password:设置管理员的初始密码
    • auth_mode:用户认证模式,默认是db_auth,也可以使用ldap验证。
    • db_password:使用db需要指定连接数据库的密码
    • self_registration:是否允许自行注册用户,默认是on,新版本可以在图形界面中修改。
    • max_job_workers:最大工作数,默认是三个

    重启harbor

    cd /data/app/harbor
    docker-compose stop
    docker-compose  up -d 
    

    harbor日志查看

    cd /var/log/harbor
    grep "ERROR" *   
    

    浏览器访问

    初始密码:admin/Harbor12345

    上传镜像到harbor

    创建相关的项目组和用户

    第一步:创建项目组

    第二步:创建项目用户

    第三步:将用户加入到项目组中。

    创建镜像并上传到私有镜像中

    第一步:客户端登录镜像仓库

    docker login www.biglittleant.cn
    Username: niu
    Password: 
    Login Succeeded
    

    第二步:找到要上传的镜像CONTAINER ID

    docker ps -a 
    CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS              PORTS                                      NAMES
    63ba23b2bf66        nginx:1.11.5                     "nginx -g 'daemon off"   18 minutes ago      Up 18 minutes       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx
    

    第三步:上传镜像到私有仓库

    docker commit -m 'my nginx' 63ba23b2bf66  test/nginx:v1
    docker tag test/nginx:v1 www.biglittleant.cn/testproject/mynginx:v1
    docker push www.biglittleant.cn/testproject/mynginx:v1
    The push refers to a repository [www.biglittleant.cn/testproject/mynginx]
    648541937c8a: Pushed 
    3f117c44afbb: Pushed 
    c4a8b7411af4: Pushed 
    fe4c16cbf7a4: Pushed 
    v1: digest: sha256:df87de0675559f8a5a9b01a1d340a95e9b152d9d40c282e5ad48bcdc59d488cd size: 1155
    

    第四步:验证镜像是否上传成功

    harbor其他配置

    harbor使用http访问

    如果使用http启动harbor需要在docker中配置--insecure-registry选项。
    旧版本docker:

    vim /etc/sysconfig/docker
    OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false --insecure-registry www.biglittlaent.cn'
    

    新版本docker:

    vim /etc/docker/daemon.json 
    {
        "insecure-registries" : ["www.biglittlaent.cn"]
    }
    

    重启harbor程序

    使用 compose停止harbor

    shell> cd /data/app/harbor/
    shell> docker-compose down
    Stopping nginx ... done
    Stopping harbor-jobservice ... done
    Stopping harbor-ui ... done
    Stopping harbor-db ... done
    Stopping registry ... done
    Stopping harbor-log ... done
    

    修改harbor.cfg配置文件后

    docker-compose down ## 第一步停止harbor
    vim harbor.cfg ## 修改镜像
    sudo install.sh ## 重新初始化镜像
    

    harbor数据路径: /data/
    日志路径:/var/log/harbor

    扩展阅读

    docker 登录成功后会在当前用户的家目录中创建如下文件

    vim ~/.docker/config.json
    {
            "auths": {
                    "192.168.56.13": {
                            "auth": "bml1OkhhcmJvcjEyMzQ1"
                    }
            }
    }
    

    登出后如下文件被清除

    vim ~/.docker/config.json
    {
            "auths": {}
    }
    

    参考文档

    harbor-文件配置
    harbor-https配置

    报错汇总

    打开浏览器报502错误

    原因:
    代码内部将路径写死成了/data/如果你更换路径需要修改docker-compose.yml文件

    docker-compose down
    sed -i 's#/data#/data/db#g' docker-compose.yml 
    sh ./install.sh
    
  • 相关阅读:
    Android学习(九) SharedPreferences
    Android学习(八) 打开Activity
    Android学习(七) Android实现计算器
    Android学习(六) 文本框边框
    Android学习(五) 圆角实现(转)
    Android学习(四) Layout五大布局
    Android学习(三) 自动完成的使用
    SQL Server中的三种物理连接操作
    ASP.NET实现大文件下载
    ASP.NET上传大文件的问题
  • 原文地址:https://www.cnblogs.com/biglittleant/p/7283738.html
Copyright © 2020-2023  润新知