前言

之前整理过一篇基于docker安装的Harbor的文章,但是在实际的运用中,发现那么玩并不实用,根据后续的实用,这里重新整理一个新的教程

准备
Docker安装及docker-compose

可参考:CentOS 7下安装Docker及基础操作;Harbor的运行是通过docker-compose进行服务编排,所以这里需要优先安装好;

下载Harbor安装包
  • 版本查看
    官方地址,选择自己需要安装的版本;
  • 下载
  • 直接在上面的官网点击下载
  • wget安装
// 第一步 找到上图中对应版本的包,右键复制连接
// 在linux上通过以下指令
wget https://github.com/goharbor/harbor/releases/download/v1.10.1/harbor-offline-installer-v1.10.1.tgz
  • 下载建议
    建议将上面的地址拷贝出来,通过迅雷下载,速度会快很多,毕竟包有点大,咱的时间比较珍贵。
安装
  • 解压
    如果不是通过wget下载的,通过xftp将下载的包上传到服务器/use/local下
tar -zxvf harbor-offline-installer-v1.10.1.tgz
证书
  • 获取域名的SSL证书
    这里的域名格式如下: https://hub.youdname.com youdname表示你的域名
    可以通过以下的方式得到SSL证书:
    方式一(土豪推荐):花钱买
    方式二(首选推荐):自签名的泛域名证书;ACME.sh 使用指南,Let’s Encrypt的签发使用;此方式会麻烦一些,但是申请的是泛域名的证书,一劳永逸,之后的所有二级域名都可以使用这个证书;并且证书会定时更新,不会过期;
// 成功之后可以得到以下两个证书
1-hub.youdname.com.crt
2-hub.youdname.com.key
  • 方式三(推荐):通过腾讯云或者阿里云申请免费的证书,有效期为一年;免费SSL证书实现https请求;免费没法申请泛域名证书;但是申请起来会比较简单,过期需要自己重新事情;
// 成功之后可以得到以下两个证书
youdname.com.crt
youdname.com.key
配置
  • 进入解压目录
cd /usr/local/harbor
// 创建用于保存数据的数据的目录
mkdir -p /home/docker/harbor/data
  • 修改harbor.yml 主需要修改以下配置
// 第一个参数,域名
 hostname: hub.youdname.com
 // http的端口,建议不要设置为8080,容易和其他服务冲突
 http.port: 880
 // https端口
 https.port: 443
 https.certificate: 你的ssl证书路径/hub.youdname.com.crt
 https.private_key: 你的ssl证书路径/hub.youdname.com.key
 
 // 管理员密码
 harbor_admin_password: 自己定义
 
 // 数据库密码
 database.password: 数据库密码,自己定义,也可以不该

 // 存储数据的路径
 data_volume: /home/docker/harbor/data(可更改)
  • 启动
cd /usr/local/harbor
./install.sh
  • 启动会分为5步
    第一步:检查Docker安装
    第二步:检查docker-compose安装
    第三步:下载关联的镜像

    第四步:初始化配置
    第五步:启动服务
Nginx代理配置

可以通过Nginx,统一入口,代理到Harbor的服务

  • 配置
server {
  listen 80;
  listen 443 ssl;
  server_name hub.youdname.com(根据个人的解析修改)

  ssl on;
  ssl_certificate 你的ssl证书路径/youdname.com.crt;
  ssl_certificate_key 你的ssl证书路径/youdname.com.key;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1.1 TLSv1.2;

  client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads

  # required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)
  chunked_transfer_encoding on;

  upstream internal_docker_registry {
      server 192.168.1.123:443; # IP修改为你安装Harbor的地址
  }
  
  location / {
      proxy_pass https://internal_docker_registry;
      proxy_read_timeout 90;

      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection $http_connection;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      proxy_cache_bypass $http_upgrade;
  }
}
  • 重启NG
    sbin/nginx -s reload
测试
  • 访问管理平台
    https://hub.youdname.com
  • 推送测试

    具体使用就不说啦,界面很整洁,管理平台点吧点吧就知道怎么用了;