• Harbor安装部署--基于 Docker Distribution 的企业级 Registry 服务


    harbor简介

    Harbor 是一个企业级 Registry 服务。它对开源的 Docker Registry 服务进行了扩展,添加了更多企业用户需要的功能。Harbor 被设计用于部署一套组织内部使用的私有环境,这个私有 Registry 服务对于非常关心安全的组织来说是十分重要的。另外,私有 Registry 服务可以通过避免从公域网下载镜 像而提高企业生产力。这对于没有良好的 Internet 连接状态,使用 Docker Container 的用户是一个福音。

    • 基于角色的访问控制:用户与 Docker 镜像仓库通过“项目”进行组织管理,一个用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。
    • 图形化用户界面:用户可以通过浏览器来浏览,检索当前 Docker 镜像仓库,管理项目和命名空间。
    • 审计管理 :所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。
    • 国际化:基于英文与中文语言进行了本地化。可以增加更多的语言支持。
    • RESTful API - RESTful API :提供给管理员对于 Harbor 更多的操控, 使得与其它管理软件集成变得更容易。

    主要组件

    • Proxy:Harbor 的 registry, UI, token 等服务,通过一个前置的反向代理统一接收浏览器、Docker 客户端的请求,并将请求转发给后端不同的服务。
    • Registry:负责储存 Docker 镜像,并处理 docker push/pull 命令。由于我们要对用户进行访问控制,即不同用户对 Docker image 有不同的读写权限,Registry 会指向一个 token 服务,强制用户的每次 docker pull/push 请求都要携带一个合法的 token, Registry 会通过公钥对 token 进行解密验证。
    • Core services:这是 Harbor 的核心功能,主要提供以下服务: UI:提供图形化界面,帮助用户管理 registry 上的镜像(image),并对用户进行授权;
    • webhook:为了及时获取 registry 上 image 状态变化的情况, 在 Registry 上配置 webhook,把状态变化传递给 UI 模块;
    • token 服务:负责根据用户权限给每个 docker push/pull 命令签发 token。Docker 客户端向Registry 服务发起的请求,如果不包含 token,会被重定向到这里,获得 token 后再重新向 Registry进行请求;
    • Database:为 core services 提供数据库服务,负责储存用户权限、审计日志、Docker image 分组信息等数据。
    • Log collector:为了帮助监控 Harbor 运行,负责收集其他组件的 log,供日后进行分析。

    harbor部署、使用

      (1)下载离线安装包、解压

      在github下载harbor;

      下载链接:https://storage.googleapis.com/harbor-releases/release-1.4.0/harbor-offline-installer-v1.4.0.tgz

      node02       IP:192.168.3.201/24

      

      [root@node02 ~]# tar xf harbor-offline-installer-v1.4.0.tgz -C /usr/local/    #解压到/usr/local/

      [root@node02 ~]# systemctl  stop docker-distribution.service         #如果主机上有docker distribution,要先停掉

         [root@node02 ~]# cd /usr/local/harbor/

       

      [root@node02 harbor]# vim harbor.cfg

             ...

         hostname = 192.168.3.201    #文件中这一项要修改,其他的看个人需求,只能写ip,我的写主机名不行,写进hosts文件也不行

             ...

       

      (2)安装

      安装docker-compose

         [root@node02 harbor]# yum install epel-release -y         #docker-compose在epel仓库中,要先装epel

         [root@node02 harbor]# yum -y install docker-compose

       安装harbor:

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

              ...

         ----Harbor has been installed and started successfully.----      #最后看到这一行,证明安装成功

              ...

        

      查看端口,harbor直接用的就是80端口:

        [root@node02 harbor]# netstat -ntlp |grep "80"
        

      harbor的操作命令:

      • 如果需要修改Harbor的配置文件harbor.cfg,因为Harbor是基于docker-compose服务编排的,我们可以使用docker-compose命令重启Harbor。
      • 重启Harbor命令:docker-compose start | stop | restart
      • 暂停、恢复:docker-compose pause 、 docker-compose unpause
      • 帮助:docker-compose --help

     

      (3)web页面访问

      用浏览器直接访问:192.168.3.201 

      默认账号、密码:admin    Harbor12345

       

       (4)将镜像推送到harbor

      比如要把node01上的镜像推送到Harbor: 

      修改node01的配置文件:
        [root@node01 ~]# vim /etc/docker/daemon.json

        {
        "registry-mirrors": ["https://fwas9x15.mirror.aliyuncs.com","https://registry.docker-cn.com"],
        "hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"],
        "insecure-registries": ["192.168.3.201"]      #因为Harbor默认监听的80端口,所以不用写端口;而且只能写ip,写主机名不行,写进hosts文件也不行
        }

        “我的这里只能写IP,写主机名不行,修改hosts文件也不行”

        [root@node01 ~]# systemctl restart docker      #重启docker

        [root@node01 ~]# docker login 192.168.3.201     #登录harbor(node02:192.168.3.201)

        这里登陆的账号信息,会保存在本机的/root/.docker/config.json中 

      推送:

        在harbor上新建一个项目叫weiyiming;

        

        查看推送命令:

        

        [root@node01 ~]# docker tag busybox 192.168.3.201/weiyiming/busybox:latest    #打标一个镜像,
        [root@node01 ~]# docker push 192.168.3.201/weiyiming/busybox         #推送,这里的weiyiming是新建的项目

         可以看到已经推送到harbor了,如下图:

        

  • 相关阅读:
    wrap,wrapall,wrapinner的区别:
    jqueryappend和appendTo的区别
    《Nagios系统监控实践》一书出版
    基于Python的密码生成程序的优化
    Puppet学习:pp文件权限问题
    依然看不清
    免费编程中文书籍索引
    Linux批量修改指定目录下的文件或文件夹权限
    puppet学习:文件夹权限的问题
    Zabbix探索:Zabbix API使用时的错误1
  • 原文地址:https://www.cnblogs.com/weiyiming007/p/10302345.html
Copyright © 2020-2023  润新知