• linux运维、架构之路-企业级镜像仓库Harbor


    一、Harbor介绍

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

         Harbor主要组件包括proxy,它是一个nginx前端代理,主要是分发前端页面ui访问和镜像上传和下载流量,Ui提供了一个Web管理界面,当然还包括了一个前端页面和后端API,底层使用mysql数据库;Registry是镜像仓库,负责存储镜像文件,当镜像上传完毕后通过ui创建Registry。 当然registry的token认证也是通过ui组件完成;adminserver是系统的配置管理中心附带检查存储用量,ui和Jobserver启动时候会需要加载adminserver的配置;jobservice是负载镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry并记录job_log,log是日志汇总组件,通过docker的log-driver把日志汇总到一起。

            Harbor 的每个组件都是以 Docker 容器的形式构建的,我们使用 Docker Compose 来对它进行部署。

    • proxy:由 Nginx 服务器构成的反向代理。
    • registry:由 Docker 官方的开源 registry 镜像构成的容器实例。
    • ui:即架构中的 core services, 构成此容器的代码是 Harbor 项目的主体。
    • mysql:由官方 MySql 镜像构成的数据库容器。
    • log: 运行着 rsyslogd 的容器,通过 log-driver 的形式收集其他容器的日志。

    二、Harbor原理图

     三、Harbor部署

    1、服务器规划

    系统

    IP地址

    主机名

    CPU

    内存

    CentOS  7.5

    192.168.56.100

    docker

    2C

    2G

    CentOS  7.5

    192.168.56.101

    harbor

    2C

    2G

    2、docker主机部署docker服务

    ①下载软件

    wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
    wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm

    ②安装软件

    yum install docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm -y
    yum install docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm -y

    ③启动Docker服务

    systemctl enable docker 
    systemctl start docker

    3、Harbor部署

    ①安装Docker-compose

    curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose

    常用命令:

    docker-compose up -d             #后台启动,如果容器不存在根据镜像自动创建
    docker-compose down   -v         #停止容器并删除容器
    docker-compose start             #启动容器,容器不存在就无法启动,不会自动创建镜像
    docker-compose stop              #停止容器

    ②安装Harbor

    wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.0.tgz
    tar xf harbor-online-installer-v1.5.0.tgz -C /app

    ③修改配置

    [root@harbor ~]# cd /app/harbor/
    [root@harbor harbor]# ll
    总用量 854960
    drwxr-xr-x 4 root root        37 1月   4 17:06 common
    -rw-r--r-- 1 root root      1185 5月   2 2018 docker-compose.clair.yml
    -rw-r--r-- 1 root root      1725 5月   2 2018 docker-compose.notary.yml
    -rw-r--r-- 1 root root      3596 5月   2 2018 docker-compose.yml
    drwxr-xr-x 3 root root       156 5月   2 2018 ha
    -rw-r--r-- 1 root root      6685 1月   4 17:02 harbor.cfg
    -rw-r--r-- 1 root root 875401338 5月   2 2018 harbor.v1.5.0.tar.gz
    -rwxr-xr-x 1 root root      5773 5月   2 2018 install.sh
    -rw-r--r-- 1 root root     10771 5月   2 2018 LICENSE
    -rw-r--r-- 1 root root       482 5月   2 2018 NOTICE
    -rwxr-xr-x 1 root root     27379 5月   2 2018 prepare

    修改harbor.cfg文件:

    hostname = 192.168.56.101

    安装

    /app/harbor/install.sh

     ④Web页面访问

    地址:  http://192.168.56.101

    默认端口为80,需要修改端口请修改docker-compose.yaml对应服务的映射

    还需修改common/templates/registry/config.yml文件加入要修改的端口

    auth:
      token:
        issuer: registry-token-issuer
        realm: $ui_url:8080/service/token
        rootcertbundle: /etc/registry/root.crt
        service: token-service

     默认用户:admin 密码:Harbor12345

    ⑤新建项目

     ⑥修改Harbor日志路径

    docker-compose.yml

    services:
      log:
        image: goharbor/harbor-log:v1.7.0
        container_name: harbor-log 
        restart: always
        dns_search: .
        cap_drop:
          - ALL
        cap_add:
          - CHOWN
          - DAC_OVERRIDE
          - SETGID
          - SETUID
        volumes:
          - /data/harbor/log/:/var/log/docker/:z
          - ./common/config/log/:/etc/logrotate.d/:z
    docker-compose up -d             #后台启动,如果容器不存在根据镜像自动创建
    docker-compose down   -v         #使用此命令停止容器并删除容器更改路径才生效

    4、修改docker的配置文件

    vim /usr/lib/systemd/system/docker.service
    
    ExecStart=/usr/bin/dockerd --insecure-registry 192.168.56.101

     重启Docker服务

    systemctl daemon-reload
    systemctl restart docker

    5、测试Docker推送镜像到Harbor仓库

    ①登录

    [root@docker tools]# docker login -u admin -p Harbor12345 192.168.56.101
    Login Succeeded

    ②Pull镜像

    [root@docker ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    [root@docker ~]# docker pull daocloud.io/library/nginx:latest
    latest: Pulling from library/nginx
    0a4690c5d889: Pull complete 
    9719afee3eb7: Pull complete 
    44446b456159: Pull complete 
    Digest: sha256:f83b2ffd963ac911f9e638184c8d580cc1f3139d5c8c33c87c3fb90aebdebf76
    Status: Downloaded newer image for daocloud.io/library/nginx:latest

    ③给镜像打Tag

    [root@docker ~]# docker tag daocloud.io/library/nginx:latest 192.168.56.101/demon/nginx:v1

    ④推送镜像到Harbor仓库

    [root@docker ~]# docker push 192.168.56.101/demon/nginx:v1
    The push refers to a repository [192.168.56.101/demon/nginx]
    589561a3ffb4: Pushed 
    ef7dbb0cfc81: Pushed 
    d56055da3352: Pushed 
    v1: digest: sha256:0069dbf31a3ca8921b9ca112dead0ca95072af04c571c99974a65883bf8ca135 size: 948

    ⑤登录Harbor仓库验证

  • 相关阅读:
    16 pymysql模块的使用
    15 可视化工具 Navicat的简单使用
    14 补充 MySQL的创建用户和授权
    13 多表查询
    linux常用查看文件或日志命令
    linux查找大文件命令
    linux测试环境维护之磁盘空间维护
    linux配置IP访问权限
    通过pytty工具代理连接数据库mysql(绕开数据库白名单限制)
    redis安装详解
  • 原文地址:https://www.cnblogs.com/yanxinjiang/p/12150411.html
Copyright © 2020-2023  润新知