Skip to content

1、简介

Harbor 是 VMware 开源的企业级 Docker 镜像仓库,支持:

  • 镜像管理(push/pull)
  • 用户权限控制
  • 项目隔离
  • 镜像漏洞扫描(Trivy)
  • Web UI 管理

2、安装docker和docker-compose

安装docker和docker-compose 过程省略

3、下载并安装Harbor

3.1 下载最新版harbor并解压至/root下

bash
URL=$(curl -s https://api.github.com/repos/goharbor/harbor/releases/latest | grep browser_download_url | grep offline | head -n 1 | cut -d '"' -f 4) && cd /root && wget -O harbor.tgz "$URL" && tar -zxvf harbor.tgz

3.2 修改核心配置文件

bash
mkdir /home/application/harbor -p
cp /root/harbor/harbor.yml.tmpl /home/application/harbor/harbor.yml
vim /home/application/harbor/harbor.yml

配置内容

bash
hostname: harbor.demo.net

#https关闭,由nginx代理后转发到harbor的nginx
#https:
#  port: 443
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path

external_url: https://harbor.demo.net
harbor_admin_password: Changeme1234

database:
  password: Changeme2026

#配置harbor数据持久化路径
data_volume: /home/application/harbor/data

#配置trivy,该配置项为2.15新增2.15之前无此配置项
trivy:
  # OCI repository to retrieve the trivy vulnerability database from.
  db_repository: ghcr.nju.edu.cn/aquasecurity/trivy-db
  # OCI repository to retrieve the Java trivy vulnerability database from.
  java_db_repository: ghcr.nju.edu.cn/aquasecurity/trivy-java-db:1

#配置harbor日志持久化路径
log:
  local:
    location: /home/application/harbor/log

#与前面https相对应
proxy:
#  https_proxy:

3.3 自动渲染docker-compose,安装harbor

bash
#配置环境变量
export HARBOR_BUNDLE_DIR=/home/application/harbor

#安装harbor并开启trivy
/root/harbor/install.sh  --with-trivy

3.4 外层nginx配置

bash
server {
    listen 80;
    server_name harbor.demo.net;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name harbor.demo.net;

    root /usr/share/nginx/html;

    # SSL 配置
    include /home/application/nginx/conf.d/cert.ssl;

    client_max_body_size 0;

    location / {
        proxy_pass http://1.1.1.1:80;

        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 https;

        proxy_http_version 1.1;
        proxy_set_header Connection "";

        proxy_buffering off;
        proxy_request_buffering off;
    }
}

error_page 404 /404.html;

location = /40x.html {
}

error_page 500 502 503 504 /50x.html;

location = /50x.html {
}

4、验证docker容器

bash
docker ps -a
CONTAINER ID   IMAGE                                   COMMAND                   CREATED      STATUS                PORTS                                     NAMES
322b58430770   goharbor/nginx-photon:v2.15.1           "nginx -g 'daemon of…"   9 days ago   Up 9 days (healthy)   0.0.0.0:80->8080/tcp, [::]:80->8080/tcp   nginx
4d43ee5d8f89   goharbor/harbor-jobservice:v2.15.1      "/harbor/entrypoint.…"   9 days ago   Up 9 days (healthy)                                             harbor-jobservice
62df48ca7bbf   goharbor/harbor-core:v2.15.1            "/harbor/entrypoint.…"   9 days ago   Up 9 days (healthy)                                             harbor-core
70620911cb41   goharbor/trivy-adapter-photon:v2.15.1   "/home/scanner/entry…"   9 days ago   Up 9 days (healthy)                                             trivy-adapter
e982e6b518b9   goharbor/harbor-db:v2.15.1              "/docker-entrypoint.…"   9 days ago   Up 9 days (healthy)                                             harbor-db
2c8b671d1ec4   goharbor/harbor-portal:v2.15.1          "nginx -g 'daemon of…"   9 days ago   Up 9 days (healthy)                                             harbor-portal
ee47dac9ba09   goharbor/harbor-registryctl:v2.15.1     "/home/harbor/start.…"   9 days ago   Up 9 days (healthy)                                             registryctl
5786e5376e06   goharbor/redis-photon:v2.15.1           "redis-server /etc/r…"   9 days ago   Up 9 days (healthy)                                             redis
3f75d1f5dee8   goharbor/registry-photon:v2.15.1        "/home/harbor/entryp…"   9 days ago   Up 9 days (healthy)                                             registry
33a94f9f7e23   goharbor/harbor-log:v2.15.1             "/bin/sh -c /usr/loc…"   9 days ago   Up 9 days (healthy)   127.0.0.1:1514->10514/tcp                 harbor-log

5、登录harbor控制台

使用域名登录控制台
https://harbor.demo.net
用户名为:admin
密码为配置文件中的 harbor_admin_password: Changeme1234

6、从旧harbor迁移镜像至新harbor

6.1 新建仓库

6.2 新建复制规则

6.3 开始复制和查看复制进度

最近更新