曾国藩:一勤天下无难事

使用Harbor管理Docker镜像

2019.03.15

前言

根据Harbor官方描述:

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

部署

  • 添加docker官方源

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    
  • 安装docker

    yum list docker-ce --showduplicates | sort -r
    yum install  -y docker-ce-18.06.3.ce-3.el7
    

    注:这里使用官方最新docker版本

  • 安装docker-compose

    yum -y install docker-compose
    
  • 修改docker配置文件/etc/docker/daemon.json (后续会用到),将harbor的IP添加到配置内。

    {
        "insecure-registries": ["10.0.0.34"]
    }
    
  • 启动docker

    systemctl daemon-reload
    systemctl restart docker.service
    
  • 安装Harbor,这里使用下载离线包的方式安装,请到github下载要使用的版本。

    wget https://storage.googleapis.com/harbor-releases/release-1.7.0/harbor-offline-installer-v1.7.4.tgz
    
  • 解压并修改配置,这里要从公网访问web页面,所以配置文件里的hostname里写的是harbor的外网ip。

    tar xvf harbor-offline-installer-v1.7.4.tgz
    cd harbor
    vim harbor.cfg
        hostname = 94.xxx.xxx.xxx
    
  • 执行安装脚本

    ./install.sh
    

    等等完成后会启动10个容器

    [root@VM_0_34_centos harbor]# docker ps
    CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS                       PORTS                                                              NAMES
    39b94959d4b6        goharbor/nginx-photon:v1.7.4             "nginx -g 'daemon of…"   About an hour ago   Up About an hour (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:4443->4443/tcp   nginx
    d0ed8eefcc00        goharbor/harbor-portal:v1.7.4            "nginx -g 'daemon of…"   About an hour ago   Up 42 minutes (healthy)      80/tcp                                                             harbor-portal
    c47d91868179        goharbor/harbor-jobservice:v1.7.4        "/harbor/start.sh"       About an hour ago   Up 42 minutes                                                                                   harbor-jobservice
    0b639dece741        goharbor/harbor-core:v1.7.4              "/harbor/start.sh"       About an hour ago   Up 42 minutes (healthy)                                                                         harbor-core
    fee9d62ab1b8        goharbor/redis-photon:v1.7.4             "docker-entrypoint.s…"   About an hour ago   Up About an hour             6379/tcp                                                           redis
    1aaec1227c62        goharbor/harbor-adminserver:v1.7.4       "/harbor/start.sh"       About an hour ago   Up About an hour (healthy)                                                                      harbor-adminserver
    931233aa6d8d        goharbor/harbor-db:v1.7.4                "/entrypoint.sh post…"   About an hour ago   Up About an hour (healthy)   5432/tcp                                                           harbor-db
    44aa216b1876        goharbor/registry-photon:v2.6.2-v1.7.4   "/entrypoint.sh /etc…"   About an hour ago   Up About an hour (healthy)   5000/tcp                                                           registry
    6832dff60e6d        goharbor/harbor-registryctl:v1.7.4       "/harbor/start.sh"       About an hour ago   Up About an hour (healthy)                                                                      registryctl
    f8d7ae097c08        goharbor/harbor-log:v1.7.4               "/bin/sh -c /usr/loc…"   About an hour ago   Up About an hour (healthy)   127.0.0.1:1514->10514/tcp                                          harbor-log
    root@VM_0_34_centos harbor]#
    
  • 此时访web,即可进入harbor,页面默认管理用户及密码:admin/Harbor12345

  • 复制管理

    这是个很棒的功能,比如公司有很多个部署都有单独的镜像仓库用harbor管理(生产环境,测试环境等),当时测试环境的镜像测试成功后可以使用此功能将镜像复制到生产环境。

    复制管理里添加规则,即可