部署 Docker Harbor

一、Harbor 安装前提条件

1、硬件 下表列出了部署 Harbor 的最小和推荐硬件配置
资源 最低 推荐
CPU 2 个 CPU 4 个 CPU
内存 4 GB 8 GB
硬盘 40 GB 160 GB
2、软件 下表列出了必须安装在目标主机上的软件版本。
软件 版本 描述
Docker 引擎 版本 > 20.10 Docker 引擎安装
Docker Compose Docker Compose > 2.3 Docker Compose 是 Docker 引擎的一部分
OpenSSL 建议使用最新版本 用于生成 Harbor 的证书和密钥
3、网络端口 Harbor 需要在目标主机上打开以下端口。
端口 协议 描述
443 HTTPS Harbor 门户和核心 API 接受此端口上的 HTTPS 请求。您可以在配置文件中更改此端口。
80 HTTP Harbor 门户和核心 API 接受此端口上的 HTTP 请求。您可以在配置文件中更改此端口。

二、下载 Harbor 安装程序

  • Harbor 的官方发布版本通常托管在 GitHub 上。
  • 访问 Harbor 的 GitHub Releases 页面: https://github.com/goharbor/harbor/releases
  • 在对应的版本中,你可以找到以下文件:
    • harbor-offline-installer-<version>.tgz(离线安装包)
    • harbor-online-installer-<version>.tgz(在线安装包)

1、在线安装程序: 在线安装程序从 Docker Hub 下载 Harbor 镜像。 因此,安装程序的大小非常小。
2、离线安装程序:如果部署 Harbor 的主机没有互联网连接,请使用离线安装程序。 离线安装程序包含预构建的镜像,因此它比在线安装程序更大。
3、在线和离线安装程序的安装过程几乎相同。
4、离线安装包:harbor-offline-installer-v2.12.2.tgz 链接: https://pan.baidu.com/s/14phQDo5sU-LOPmjMPXBamA 提取码: 6yuy

三、安装 Docker

# 添加阿里云docker-ce仓库
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 列出当前系统中所有可安装的 docker-ce 版本,并按照版本号从高到低进行排序,同时显示重复的版本。
dnf list docker-ce --showduplicates | sort -r
# 安装最新版本 docker-ce,也可以指定版本安装(dnf install -y docker-ce-20.10.15-3.el9.x86_64)
dnf install -y docker-ce
# 启用Docker Cgroup用于限制进程的资源使用量,如CPU、内存资源
# 创建目录,存放 docker 的配置文件
mkdir /etc/docker
# 创建并写入 /etc/docker/daemon.json 文件,设置 Docker 使用 systemd 作为 Cgroup 驱动
# registry-mirrors 配置:docker 镜像加速器的地址列表。
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": [
    "https://qa9ktbtj.mirror.aliyuncs.com",
    "https://docker.m.daocloud.io",
    "https://docker.mirrors.ustc.edu.cn",
    "https://www.daocloud.io/mirror"
  ]
}
EOF
# 设置 docker 开机自启
systemctl enable docker
# 启动 docker
systemctl start docker
# 查看 docker 状态
systemctl status docker

四、安装 Harbor

1、解压离线安装包
# 根目录下创建 /data 目录
mkdir /data
# 解压缩 harbor-offline-installer-v2.12.2.tgz 内容到 /data 目录下
tar -zxvf harbor-offline-installer-v2.12.2.tgz -C /data

# 进入 /data/harbor/
cd /data/harbor/
# 将当前目录下的 harbor.yml 文件复制一份到当前目录下
cp harbor.yml.tmpl harbor.yml
2、修改 harbor.yml 文件内容
# harbor 服务器的主机名或 IP
hostname: 192.168.31.113

# http 端口, 默认 80, 可自行修改如 8081 8082等 
http:
  port: 80
3、运行安装脚本
# 运行安装脚本
./install.sh

看到下面输出,说明安装成功

[Step 5]: starting Harbor ...
WARN[0000] /data/harbor/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 10/10
 ✔ Network harbor_harbor        Created                                                                                        0.1s
 ✔ Container harbor-log         Started                                                                                        0.4s
 ✔ Container registryctl        Started                                                                                        1.0s
 ✔ Container redis              Started                                                                                        1.1s
 ✔ Container harbor-db          Started                                                                                        1.2s
 ✔ Container harbor-portal      Started                                                                                        1.2s
 ✔ Container registry           Started                                                                                        1.1s
 ✔ Container harbor-core        Started                                                                                        1.5s
 ✔ Container harbor-jobservice  Started                                                                                        2.1s
 ✔ Container nginx              Started                                                                                        2.1s
✔ ----Harbor has been installed and started successfully.----
4、浏览器访问
# 用服务器 IP(192.168.31.113) 通过浏览器访问 Harbor 控制台,
# 如果上面端口修改为 8081, 访问 http://192.168.31.113:8081
# 默认用户 admin,默认密码 Harbor12345(可在 harbor.yml 中修改)

四、配置 Harbor 的 HTTPS 访问

本文用的是阿里云的免费证书

1、配置 Harbor 组件之间的内部 TLS 通信

默认情况下,Harbor 组件 (harbor-core, harbor-jobservice, proxy, harbor-portal, registry, registryctl, trivy_adapter, chartmuseum) 之间的内部通信使用 HTTP 协议,这对于某些生产环境而言可能不够安全。 从 Harbor v2.0 开始,可以将 TLS 用于此内部网络。 在生产环境中,始终使用 HTTPS 是推荐的最佳实践。

此功能通过 harbor.yml 文件中的 internal_tls 引入。 要启用内部 TLS,请将 enabled 设置为 true,并将 dir 值设置为包含内部证书文件的目录路径。

# 所有证书都可以通过 prepare 工具自动生成。
# 不加 -d 3650 默认有效期一年,加了之后十年
docker run -v /:/hostfs goharbor/prepare:v2.12.2 gencert -p /data/cert/tls/internal -d 3650
2、harbor.yml 文件内容
# Harbor 的目标主机上的 IP 地址、主机名 或 域名
hostname: reg.mydomain.com

# 使用 HTTPS 访问 Harbor 门户和令牌/通知服务。始终在生产环境和没有隔离的环境中使用 HTTPS。
https:
  # HTTPS 的端口号,用于 Harbor 门户和 Docker 命令。默认值为 443,但是一定要与 external_url 参数的端口号一致
  port: 443
  # SSL 证书的路径
  certificate: /your/certificate/path
  # SSL 密钥的路径
  private_key: /your/private/key/path
  # 是否启用强 SSL/TLS 加密套件,建议将此选项设置为 true
  strong_ssl_ciphers: true

# 使用 HTTPS 在 Harbor 组件之间通信
internal_tls:
  # 将此标志设置为 true 表示内部 tls 已启用
  enabled: true
  # 包含内部证书和密钥的目录的路径
  dir: /data/secret/tls/

# 启用此选项以使用外部代理。启用后,将不再使用主机名
external_url: https://reg.mydomain.com:443

# Harbor 系统管理员设置初始密码
# 默认用户名和密码为 admin 和 Harbor12345
# 记住在启动 Harbor 后从 UI 更改管理员密码
harbor_admin_password: Harbor12345

# 使用本地 PostgreSQL 数据库。您可以选择配置外部数据库,在这种情况下,您可以停用此选项。
database:
  # 设置本地数据库的 root 密码。您必须为生产部署更改此密码。
  password: root123
  # 空闲连接池中的最大连接数。如果它 <=0,则不保留任何空闲连接。
  max_idle_conns: 100
  # 到数据库的最大打开连接数。如果它 <= 0,则对打开连接数没有限制。
  max_open_conns: 900
  # 连接可以重复使用的最长时间。如果它 <= 0,则连接不会因为连接的年龄而关闭。
  conn_max_lifetime: 5m
  # 连接可以空闲的最长时间。如果它 <= 0,则连接不会因为连接的空闲时间而关闭。
  conn_max_idle_time: 0

# 在目标主机上存储 Harbor 数据的位置。即使 Harbor 的容器被删除和/或重新创建,这些数据也会保持不变。
data_volume: /data/harbor-storage
配置 Trivy(Harbor 的漏洞扫描组件) 扫描器。
trivy:
  # 生产环境建议仅显示有官方修复方案的漏洞
  ignore_unfixed: true

  # 生产环境必须启用跳过自动更新(需手动维护漏洞数据库)
  skip_update: true

  # 生产环境建议跳过 Java 数据库自动更新
  skip_java_db_update: true

  # 启用离线扫描模式(避免依赖外部网络)
  offline_scan: true

  # 生产环境建议全安全检查(漏洞+配置+密钥)
  security_check: vuln,config,secret

  # 保持证书验证严格模式
  insecure: false

  # 根据实际镜像大小调整超时时间(建议 10-15 分钟)
  timeout: 15m0s

  # 在 air-gapped 环境需要注释以下 token
  # github_token: your_github_token
3、运行安装脚本

方式一:默认安装,不含 Trivy

./install.sh

方式二:包含 Trivy 的安装

./install.sh --with-trivy

如果安装成功,您可以在浏览器中访问 https://reg.yourdomain.com 上的 Harbor 界面,将 reg.yourdomain.com 替换为您在 harbor.yml 中配置的域名。如果您未在 harbor.yml 中更改它们,则默认管理员用户名和密码为 admin 和 Harbor12345。

4、常用命令
# cd 到 install.sh 所在目录,停止并删除现有 harbor 服务
docker compose down

# 在后台启动 harbor 服务
docker compose up -d
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容