CentosOS搭建Harbor私有Docker仓库,及Harbor使用

Posted 小毕超

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentosOS搭建Harbor私有Docker仓库,及Harbor使用相关的知识,希望对你有一定的参考价值。

一、Harbor

Harbor是由VMware公司开源的企业级的Docker Registry管理项目,它包括权限管理(RBAC)、LDAP、日志审核、管理界面、自我注册、镜像复制和中文支持等功能。

二、Harbor核心组件

  1. Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务。
  2. db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
  3. UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权。
  4. jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log。
  5. Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
  6. Registry:镜像仓库,负责存储镜像文件。
  7. Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。

三、Harbor对比Registry

Harbor和Registry都是Docker的镜像仓库,但是Harbor作为更多企业的选择,是因为相比较于Regisrty来说,它具有很多的优势。

  1. 提供分层传输机制,优化网络传输
    Docker镜像是是分层的,而如果每次传输都使用全量文件(所以用FTP的方式并不适合),显然不经济。必须提供识别分层传输的机制,以层的UUID为标识,确定传输的对象。
  2. 提供WEB界面,优化用户体验
    只用镜像的名字来进行上传下载显然很不方便,需要有一个用户界面可以支持登陆、搜索功能,包括区分公有、私有镜像。
  3. 支持水平扩展集群
    当有用户对镜像的上传下载操作集中在某服务器,需要对相应的访问压力作分解。
  4. 良好的安全机制
    企业中的开发团队有很多不同的职位,对于不同的职位人员,分配不同的权限,具有更好的安全性。
  5. Harbor提供了基于角色的访问控制机制,并通过项目来对镜像进行组织和访问权限的控制。kubernetes中通过namespace来对资源进行隔离,在企业级应用场景中,通过将两者进行结合可以有效将kubernetes使用的镜像资源进行管理和访问控制,增强镜像使用的安全性。尤其是在多租户场景下,可以通过租户、namespace和项目相结合的方式来实现对多租户镜像资源的管理和访问控制。

四、Harbor安装

Harbor依赖Docker 和 Docker-Compose组件,所以安装Harbor要先安装Docker和Docker-Compose

一、安装Docker

请参考下面一篇我的博客:
Docker介绍及应用

二、安装Docker-Compose

请参考下面一篇我的博客:
Docker-Compose 容器编排技术

三、安装Harbor

上面Docker和Docker-Compose 安装好之后就可以来安装Harbor了

  1. 下载安装包

    在线安装包
    wget https://github.com/vmware/harbor/releases/download/v1.1.2/harbor-online-installer-v1.1.2.tgz
    或者离线安装包
    wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.3.tgz
    

    下载不下来就使用上面链接去浏览器下载,然后上传至服务器。

  2. 解压安装包并移动位置

    tar -zxvf harbor-offline-installer-v1.5.3.tgz #解压离线安装包
    mv harbor /opt/ #移到/opt目录下
    cd /opt #进入到/opt目录
    ls  #查看目录内容
    
  3. 进入harbor 目录,修改harbor.cfg配置文件

    vim harbor.cfg
    
    hostname = 192.168.0.105 #修改harbor的启动ip,这里需要依据系统ip设置
    harbor_admin_password = harbor123  #修改harbor的admin用户的密码
    
  4. 配置Harbor

    ./prepare
    
  5. 安装Harbor

    ./install.sh
    


    出现上面所示,证明安装成功!

  6. 访问Harbor页面,默认端口为80

    http://192.168.0.105 #对应自己的ip
    


    用户名\\密码,就是上面配置的:admin\\harbor123

    至此Harbor的安装就完毕了。

五、将镜像推送至Harbor

  1. 创建仓库用户

  2. 创建私有项目

  3. 点击上面创建的项目进入项目,给项目添加上面创建的成员

  4. 在项目的镜像仓库右侧给出了上传镜像的脚本

  5. 推送tomcat镜像到私有harbor项目中

    1. 拉取tomcat镜像

      docker pull tomcat
      

    2. 登录harbor仓库

      docker login 192.168.0.105
      

      如果报错:

      Error response from daemon: Get https://192.168.0.105/v2/: read tcp 192.168.0.106:47982->192.168.0.105:443: read: connection reset by peer


      解决办法:
      在daemon.json 中加入harbor仓库的ip和本机的ip:

      cat > /etc/docker/daemon.json << EOF
      {
        "registry-mirrors": ["https://你的ID.mirror.aliyuncs.com"],
         "insecure-registries":["192.168.0.105","192.168.0.106"]
      }
      EOF
      

      重启docker

      systemctl daemon-reload
      systemctl restart docker
      
    3. 在项目中标记镜像

      docker tag tomcat:latest 192.168.0.105/test/tomcat:latest
      
    4. 推送镜像到test项目

      docker push 192.168.0.105/test/tomcat:latest
      

    5. 查看harbor

  6. 拉取上传的镜像

    docker pull 192.168.0.105/test/tomcat:latest
    

六、修改Harbor端口

harbor默认是80端口,有些情况下80端口会做其他用途,Harbor就没必要占用80端口了。

  1. 修改harbor.cfg

  2. 修改 /harbor/docker-compose.yml

  3. 修改common/templates/registry/config.yml文件加入1180端口

  4. 停止harbor,重新启动

    docker-compose stop
    
    ./install.sh
    
  5. 客户端连接增加配置
    insecure-registries中配置harbor 服务器ip、端口和客户端的ip

    cat > /etc/docker/daemon.json << EOF
    {
      "registry-mirrors": ["https://你的ID.mirror.aliyuncs.com"],
       "insecure-registries":["192.168.0.105:1180","192.168.0.106"]
    }
    EOF
    

以上是关于CentosOS搭建Harbor私有Docker仓库,及Harbor使用的主要内容,如果未能解决你的问题,请参考以下文章

Docker------搭建本地私有仓库及Horbor私有仓库

Docker------搭建本地私有仓库及Horbor私有仓库

使用Harbor搭建企业级私有docker仓库

Docker私有仓库

搭建本地Docker私有仓库 与 Harbor私有仓库的部署与管理

docker搭建harbor私有仓库时报错怎么办?