• 16.Docker仓库——Docker Harhub


    Docker仓库——Docker Harhub

    介绍

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

    vmware官方开源服务列表地址:https://vmware.github.io/harbor/cn

    harbor官方gitlab地址:https://github.com/vmware/harbor

    harbor官方地址:https://goharbor.io/

    Harbor特性

    • 基于角色的访问控制(Role Based Access Control)
    • 基于策略的镜像复制(Policy based image replication)
    • 镜像的漏洞扫描(Vulnerability Scanning)
    • AD/LDAP集成(LDAP/AD support)
    • 镜像的删除和空间清理(Image deletion & garbage collection)
    • 友好的管理UI(Graphical user portal)
    • 审计日志(Audit logging)
    • RESTful API
    • 部署简单(Easy deployment)

    Harbor组件

    • 依赖的外部组件:
      1. Nginx(Proxy): Harbor的Registry、UI、Token等服务,通过一个前置的反向代理统一接收浏览器、Docker客户端的请求,并将请求转发给后端不同的服务。
      2. Registry v2: Docker官方镜像仓库, 负责储存Docker镜像,并处理Docker Push/Pull命令。由于我们要对用户进行访问控制,即不同用户对Docker镜像有不同的读写权限,Registry会指向一个Token服务,强制用户的每次Docker Push/Pull请求都要携带一个合法的Token, Registry会通过公钥对Token进行解密验证。
      3. Database(MySQL/Postgresql):为Core Services提供数据库服务,负责储存用户权限、审计日志、Docker镜像分组信息等数据。
    • Harbor自己的组件:
      1. Core Services(Admin Server): 这是Harbor的核心功能,主要提供以下服务:
        • API:提供Harbor RESTful API
        • UI:提供图形化界面,帮助用户管理Registry上的镜像, 并对用户进行授权。
        • Webhook:为了及时获取Registry上镜像状态变化的情况,在Registry上配置Webhook,把状态变化传递给UI模块。
        • Auth服务:负责根据用户权限给每个Docker Push/Pull命令签发Token。Docker客户端向Registry服务发起的请求,如果不包含Token,会被重定向到这里,获得Token后再重新向Registry进行请求。
      2. Replication Job Service:提供多个Harbor实例之间的镜像同步功能。
      3. Log Collector:为了帮助监控Harbor运行,负责收集其他组件的日志,供日后进行分析。

    harbor架构图

    img

    安装harbor

    下载地址:https://github.com/goharbor/harbor/releases

    安装说明:https://goharbor.io/docs/

    推荐使用1.7之前版本,1.7版本后与之前版本不兼容

    离线安装

    #部署docker&docker-compose(需要1.18以上)
    yum install docker docker-compose -y
    systemctl start docker && systemctl enable docker
    #上传离线安装包
    tar xvf harbor-offline-installer-<version>.tgz
    #配置harbor.yml
    hostname:目标机器的ip地址,可以是域名和公网ip,不能设置为127.0.0.1和localhost
    data_volume:harbor数据的存放地址
    harbor_admin_password:管理员密码,默认admin/Harbor12345 ,且只会生效一次
    database:数据库相关配置,默认密码root123
    jobservice
    log:日志相关
    - level: 日志的级别,debug, info, warning, error, fatal;
    - rotate_count:最多保存几个日志文件
    - rotate_size:每个日志文件的大小
    - location:日志存放目录
    #可选的参数。
    - http:http服务的端口号
    - https:
      - port:端口号
      - certificate:ssl证书
      - private_key:ssl-key的路径
    - external_url:external proxy启用的时候,external_url可用,但是hostname不再可用。
    #执行
    bash install.sh
    #启动&关闭
    docker-compose start
    docker-compose stop
    # 重启Harbor容器
    docker-compose restart
    
    # 停止并删除Harbor容器,加上-v参数可以同时移除挂载在容器上的目录
    # docker-compose down
    
    # 创建并启动Harbo容器,参数“-d”表示后台运行命令
    # docker-compose up -d
    #管理使用
    # 如果某个Harbor组件启动失败,可以在日志目录/var/log/harbor下查看具体的日志信息,进一步定位启动失败的原因
    # 启动时Harbor默认会监听宿主机的80、443、4443端口,启动Harbor之前必须确保宿主机的80、443、4443端口不被占用,否则Harbor相关组件会启动失败。
    
    # 查看Harbor容器的运行状态
    # docker ps
    
    # 或者通过docker-compose查看,此时需要进入Harbor安装脚本所在的目录里执行相关命令
    # cd /usr/local/harbor
    
    # 查看Harbor容器的运行状态
    # docker-compose ps
           Name                     Command                  State                                    Ports
    -------------------------------------------------------------------------------------------------------------------------------------
    harbor-adminserver   /harbor/start.sh                 Up (healthy)
    harbor-core          /harbor/start.sh                 Up (healthy)
    harbor-db            /entrypoint.sh postgres          Up (healthy)   5432/tcp
    harbor-jobservice    /harbor/start.sh                 Up
    harbor-log           /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp
    harbor-portal        nginx -g daemon off;             Up (healthy)   80/tcp
    nginx                nginx -g daemon off;             Up (healthy)   0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp, 0.0.0.0:80->80/tcp
    redis                docker-entrypoint.sh redis ...   Up             6379/tcp
    registry             /entrypoint.sh /etc/regist ...   Up (healthy)   5000/tcp
    registryctl          /harbor/start.sh                 Up (healthy)
    

    拉取/推送镜像

    首先我们需要进行登录,docker login ip

    这样的原因是因为Harbor默认使用http,docker默认使用https的原因。

    我们可以强制docker使用http,要在daemon.json中添加--insecure-registry myregistrydomain.com,即

    {
      "log-driver":"json-file",
      "log-opts": {"max-size":"100m", "max-file":"1"},
      "insecure-registries" : ["myregistrydomain.com"]
    }
    

    https://www.techgrow.cn/posts/99d575a6.html

  • 相关阅读:
    MSDN RSS Feeds (ZT)
    不錯,今天看到日历了.
    模糊:让你的代码远离偷窥之眼
    .NET中異常發布器的開發(1)(2)(3)
    How To Query Performance Monitor Counters Using a Web Page
    可選參數的Stored Procedure範例.
    Outlook GetCurrent Folder / GetSelectedItems / GetInspectors
    微軟的MS04007补丁有严重问题啊.
    Blog,流行有理由 (zt)
    从VB.Net到VB6.0要小心,关于使用IIF和log求对数函数(串联的小知识)
  • 原文地址:https://www.cnblogs.com/Gmiaomiao/p/14260504.html
Copyright © 2020-2023  润新知