1. 首页 > 软件安装教程 > 正文

Harbor安装配置-Harbor镜像仓库安装配置_升级迁移详细过程

1. Harbor概述与环境规划

Harbor是一个企业级的Docker镜像仓库,提供了镜像存储、访问控制、镜像扫描、漏洞管理等功能。Harbor基于Docker Registry构建,增加了企业级特性,如RBAC权限控制、LDAP集成、镜像签名等。更多学习教程www.fgedu.net.cn

1.1 Harbor版本说明

Harbor目前主要版本为2.x系列,本教程以Harbor 2.10.0为例进行详细讲解。Harbor 2.x版本相比之前版本在性能、稳定性和功能方面都有显著提升,支持更多的企业级特性。

# 查看Harbor版本
$ docker-compose -f docker-compose.yml ps
Name Command State Ports
————————————————————————————————-
harbor-core /harbor/start.sh Up (healthy) 8080/tcp
harbor-db /docker-entrypoint.sh 96 13 Up (healthy) 5432/tcp
harbor-jobservice /harbor/start.sh Up (healthy) 8080/tcp
harbor-log /bin/sh -c /usr/local/bin/ … Up (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal nginx -g daemon off; Up (healthy) 8080/tcp
nginx nginx -g daemon off; Up (healthy) 0.0.0.0:80->8080/tcp,:::80->8080/tcp
redis redis-server /etc/redis.conf Up (healthy) 6379/tcp
registry /home/harbor/entrypoint.sh Up (healthy) 5000/tcp
registryctl /home/harbor/start.sh Up (healthy) 8080/tcp

# 查看系统版本
$ cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″

# 查看内核版本
$ uname -r
5.4.17-2136.302.7.2.el8uek.x86_64

1.2 环境规划

本次安装环境规划如下:

Harbor服务器:
harbor.fgedu.net.cn (192.168.1.70) – Harbor主机

Harbor版本:2.10.0
操作系统:Oracle Linux 8.9
安装目录:/data/harbor
数据目录:/data/harbor/data
配置目录:/data/harbor/config
存储类型:本地存储
网络模式:bridge

2. 硬件环境要求

Harbor作为镜像仓库,对硬件资源要求根据镜像数量和访问量而定。学习交流加群风哥微信: itpux-com

2.1 物理主机环境要求

# 检查内存大小
# free -h
total used free shared buff/cache available
Mem: 16G 4.2G 10G 256M 1.8G 11G
Swap: 8G 0B 8G

# 检查磁盘空间
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 12G 39G 24% /
/dev/sdb1 500G 50G 451G 10% /data
/dev/sdc1 200G 20G 181G 10% /backup

# 检查CPU核心数
# nproc
8

# 检查系统架构
# uname -m
x86_64

# 检查内核版本
# uname -r
5.4.17-2136.302.7.2.el8uek.x86_64

生产环境建议:最小内存8GB(测试环境),生产环境建议16GB以上。磁盘空间根据镜像数量规划,建议至少200GB。CPU核心数建议4核以上,以支持并发访问。

2.2 vSphere虚拟主机环境要求

虚拟机配置:
– vCPU:4核
– 内存:16GB
– 磁盘:系统盘50GB + 数据盘300GB
– 网络:VMXNET3网卡,千兆网络
– 存储:建议使用SSD存储以提高I/O性能

资源池配置:
– CPU预留:2GHz
– 内存预留:8GB
– 内存限制:16GB
– CPU份额:正常
– 内存份额:正常

2.3 云平台主机环境要求

云主机规格(阿里云/腾讯云/华为云):
– 实例规格:ecs.g6.xlarge或同等规格
– vCPU:4核
– 内存:16GB
– 系统盘:高效云盘 100GB
– 数据盘:SSD云盘 300GB
– 网络带宽:5Mbps以上

存储配置:
– OSS对象存储:用于存储镜像备份
– NAS文件存储:用于共享数据
– 云盘快照:定期备份Harbor数据

3. 操作系统环境准备

在安装Harbor之前,需要对操作系统进行必要的配置和优化。

3.1 操作系统版本检查

# 检查操作系统版本
# cat /etc/os-release
NAME=”Oracle Linux Server”
VERSION=”8.9″
ID=”ol”
PRETTY_NAME=”Oracle Linux Server 8.9″

# 检查内核版本
# uname -r
5.4.17-2136.302.7.2.el8uek.x86_64

# 检查SELinux状态
# getenforce
Enforcing

# 检查防火墙状态
# systemctl status firewalld
● firewalld.service – firewalld – dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running)

3.2 依赖服务安装

# 安装Docker
# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install -y docker-ce docker-ce-cli containerd.io
# systemctl start docker
# systemctl enable docker

# 安装Docker Compose
# curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
# chmod +x /usr/local/bin/docker-compose

# 验证依赖安装
# docker –version
Docker version 20.10.24, build 297e128

# docker-compose –version
docker-compose version 1.29.2, build 5becea4c

3.3 防火墙配置

# 开放Harbor端口
# firewall-cmd –permanent –add-port=80/tcp
# firewall-cmd –permanent –add-port=443/tcp
# firewall-cmd –reload

# 验证防火墙规则
# firewall-cmd –list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh dhcpv6-client
ports: 80/tcp 443/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

4. Harbor安装配置

完成环境准备后,开始安装Harbor。

4.1 下载Harbor

# 下载Harbor
# cd /data
# wget https://github.com/goharbor/harbor/releases/download/v2.10.0/harbor-offline-installer-v2.10.0.tgz

# 解压Harbor
# tar -xzf harbor-offline-installer-v2.10.0.tgz
# mv harbor /data/harbor

# 查看Harbor目录
# ls -la /data/harbor/
total 530440
drwxr-xr-x 3 root root 4096 Apr 5 10:00 .
drwxr-xr-x 4 root root 4096 Apr 5 10:00 ..
-rw-r–r– 1 root root 33611 Apr 5 10:00 harbor.yml.tmpl
-rw-r–r– 1 root root Apr 5 10:00 install.sh
-rw-r–r– 1 root root 1139 Apr 5 10:00 prepare
-rw-r–r– 1 root root 543123456 Apr 5 10:00 harbor.v2.10.0.tar.gz

4.2 配置Harbor

# 复制配置文件
# cp /data/harbor/harbor.yml.tmpl /data/harbor/harbor.yml

# 编辑Harbor配置
# vi /data/harbor/harbor.yml

# Harbor配置示例
hostname: harbor.fgedu.net.cn

http:
port: 80

https:
port: 443
certificate: /data/harbor/certs/harbor.crt
private_key: /data/harbor/certs/harbor.key

internal_tls:
enabled: false
directory: /etc/harbor/tls/internal

harbor_admin_password: Harbor12345

database:
password: root123
max_idle_conns: 100
max_open_conns: 900
conn_max_lifetime: 5m

data_volume: /data/harbor/data

log:
level: info
rotate_count: 50
rotate_size: 200M
location: /data/harbor/log

chart:
absolute_url: disabled

jobservice:
max_job_workers: 10

notification:
webhook_job_max_retry: 10

registry:
storage:
filesystem:
maxthreads: 100

cache:
layerinfo: redis

redis:
host: redis
port: 6379
password:
max_idle: 100
max_active: 1000
timeout: 300s

proxy:
http_proxy:
https_proxy:
no_proxy:
components: [“core”, “jobservice”, “registry”, “registryctl”, “token-service”]

# 验证配置
# cat /data/harbor/harbor.yml

4.3 生成SSL证书

# 创建证书目录
# mkdir -p /data/harbor/certs
# cd /data/harbor/certs

# 生成CA证书
# openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 365 -out ca.crt

# 生成服务器证书
# openssl req -newkey rsa:4096 -nodes -sha256 -keyout harbor.key -out harbor.csr

# 签名服务器证书
# openssl x509 -req -days 365 -in harbor.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out harbor.crt

# 验证证书
# ls -la /data/harbor/certs/
-rw-r–r– 1 root root 1675 Apr 5 10:00 ca.crt
-rw-r–r– 1 root root 3247 Apr 5 10:00 ca.key
-rw-r–r– 1 root root 172 Apr 5 10:00 ca.srl
-rw-r–r– 1 root root 1639 Apr 5 10:00 harbor.crt
-rw-r–r– 1 root root 1704 Apr 5 10:00 harbor.csr
-rw-r–r– 1 root root 3243 Apr 5 10:00 harbor.key

4.4 安装Harbor

# 运行prepare脚本
# cd /data/harbor
# ./prepare

# 运行安装脚本
# ./install.sh

# 输出案例如下:
[Step 0]: checking if docker is installed …
[Step 1]: checking docker-compose is installed …
[Step 2]: loading Harbor images …
[Step 3]: preparing environment …
[Step 4]: preparing harbor configs …
[Step 5]: starting Harbor …
Creating network “harbor_harbor” with the default driver
Creating harbor-log … done
Creating harbor-db … done
Creating redis … done
Creating registry … done
Creating registryctl … done
Creating harbor-core … done
Creating harbor-portal … done
Creating harbor-jobservice … done
Creating nginx … done

✓ —-Harbor has been installed and started successfully.—-

Now you should be able to visit the admin portal at https://harbor.fgedu.net.cn.
For more details, please visit https://github.com/goharbor/harbor .

# 验证Harbor状态
# docker-compose -f docker-compose.yml ps

4.5 访问Harbor

# 访问Harbor Web UI
# 打开浏览器访问 https://harbor.fgedu.net.cn

# 登录Harbor
# 用户名:admin
# 密码:Harbor12345

# 验证登录
# 登录后可以看到Harbor的Web界面,包含项目、镜像、用户等管理功能

5. Harbor配置优化

为了提高Harbor的性能和稳定性,需要进行一些配置优化。

5.1 存储配置优化

# 编辑Harbor配置
# vi /data/harbor/harbor.yml

# 存储配置
registry:
storage:
filesystem:
maxthreads: 100
cache:
layerinfo: redis

# 重启Harbor
# cd /data/harbor
# docker-compose down
# docker-compose up -d

# 验证配置
# docker-compose -f docker-compose.yml ps

5.2 数据库配置优化

# 编辑Harbor配置
# vi /data/harbor/harbor.yml

# 数据库配置
database:
password: root123
max_idle_conns: 100
max_open_conns: 900
conn_max_lifetime: 5m

# 重启Harbor
# cd /data/harbor
# docker-compose down
# docker-compose up -d

# 验证配置
# docker-compose -f docker-compose.yml ps

5.3 Redis配置优化

# 编辑Harbor配置
# vi /data/harbor/harbor.yml

# Redis配置
redis:
host: redis
port: 6379
password:
max_idle: 100
max_active: 1000
timeout: 300s

# 重启Harbor
# cd /data/harbor
# docker-compose down
# docker-compose up -d

# 验证配置
# docker-compose -f docker-compose.yml ps

6. Harbor镜像管理

本节介绍Harbor的镜像管理操作。

6.1 项目管理

# 登录Harbor
# docker login harbor.fgedu.net.cn
Username: admin
Password:
Login Succeeded

# 创建项目
# 在Harbor Web UI中创建项目,例如”fgedu-project”

# 推送镜像
# docker tag nginx:latest harbor.fgedu.net.cn/fgedu-project/nginx:latest
# docker push harbor.fgedu.net.cn/fgedu-project/nginx:latest

# 拉取镜像
# docker pull harbor.fgedu.net.cn/fgedu-project/nginx:latest

# 列出镜像
# 在Harbor Web UI中查看项目中的镜像

6.2 镜像扫描

# 在Harbor Web UI中扫描镜像
# 1. 进入项目
# 2. 选择镜像
# 3. 点击”扫描”按钮
# 4. 查看扫描结果

# 配置自动扫描
# 1. 进入项目设置
# 2. 开启”自动扫描”选项
# 3. 设置扫描策略

6.3 镜像复制

# 配置复制规则
# 1. 进入”复制”页面
# 2. 点击”新建规则”
# 3. 配置源和目标
# 4. 设置复制策略
# 5. 保存规则

# 验证复制
# 推送镜像后查看复制状态

7. Harbor安全配置

Harbor提供了多种安全功能,包括RBAC权限控制、LDAP集成、镜像签名等。

7.1 RBAC权限控制

# 创建用户
# 在Harbor Web UI中创建用户,例如”developer”

# 创建角色
# 在Harbor Web UI中创建角色,例如”Developer”

# 分配权限
# 1. 进入项目设置
# 2. 选择”成员”
# 3. 添加用户和角色
# 4. 保存设置

# 验证权限
# 使用新用户登录并测试权限

7.2 LDAP集成

# 配置LDAP
# 1. 进入”系统管理” -> “认证”
# 2. 选择”LDAP”
# 3. 配置LDAP服务器信息
# 4. 测试连接
# 5. 保存设置

# 验证LDAP登录
# 使用LDAP用户登录Harbor

7.3 镜像签名

# 配置镜像签名
# 1. 进入”系统管理” -> “签名”
# 2. 开启”镜像签名”
# 3. 配置签名设置
# 4. 保存设置

# 验证镜像签名
# 推送镜像后查看签名状态

8. Harbor性能优化

在生产环境中,需要对Harbor进行性能优化以提高镜像管理效率。from:www.itpux.com

8.1 存储优化

# 配置存储后端
# 编辑Harbor配置
# vi /data/harbor/harbor.yml

# 存储配置
registry:
storage:
filesystem:
maxthreads: 100
cache:
layerinfo: redis

# 重启Harbor
# cd /data/harbor
# docker-compose down
# docker-compose up -d

# 清理未使用的镜像
# 在Harbor Web UI中清理未使用的镜像

8.2 网络优化

# 配置网络
# 编辑docker-compose.yml
# vi /data/harbor/docker-compose.yml

# 网络配置
networks:
harbor:
driver: bridge
ipam:
config:
– subnet: 172.18.0.0/16

# 重启Harbor
# cd /data/harbor
# docker-compose down
# docker-compose up -d

# 验证网络
# docker network inspect harbor_harbor

8.3 资源配置优化

# 编辑docker-compose.yml
# vi /data/harbor/docker-compose.yml

# 资源配置
harbor-core:
image: goharbor/harbor-core:v2.10.0
container_name: harbor-core
restart: always
cap_drop:
– ALL
cap_add:
– CHOWN
– SETGID
– SETUID
volumes:
– ./common/config/core:/etc/harbor
– ./common/config/registry/root.crt:/etc/registry/root.crt
– ./common/config/shared/trust-certificates:/harbor/trust-certificates
networks:
– harbor
depends_on:
– harbor-db
– redis
env_file:
– ./common/config/core/env
logging:
driver: “json-file”
options:
max-size: “100m”
resources:
limits:
cpu: 2
memory: 4G
requests:
cpu: 1
memory: 2G

# 重启Harbor
# cd /data/harbor
# docker-compose down
# docker-compose up -d

# 验证资源配置
# docker stats

9. Harbor升级迁移

本节介绍Harbor的版本升级和数据迁移方法。

9.1 Harbor版本升级

# 备份Harbor数据
# cd /data/harbor
# docker-compose down
# cp -r /data/harbor/data /backup/harbor_data_$(date +%Y%m%d)
# cp -r /data/harbor/config /backup/harbor_config_$(date +%Y%m%d)

# 下载新版本Harbor
# cd /data
# wget https://github.com/goharbor/harbor/releases/download/v2.10.1/harbor-offline-installer-v2.10.1.tgz

# 解压新版本
# tar -xzf harbor-offline-installer-v2.10.1.tgz
# mv harbor harbor-new

# 复制配置文件
# cp /data/harbor/harbor.yml /data/harbor-new/

# 升级Harbor
# cd /data/harbor-new
# ./prepare
# ./install.sh

# 验证升级
# docker-compose -f docker-compose.yml ps
# 打开浏览器访问 https://harbor.fgedu.net.cn

9.2 Harbor配置迁移

# 导出Harbor配置
# cp -r /data/harbor/harbor.yml /backup/harbor_config.yml

# 在新服务器上导入配置
# cp /backup/harbor_config.yml /data/harbor/

# 启动Harbor
# cd /data/harbor
# ./prepare
# ./install.sh

# 验证配置
# docker-compose -f docker-compose.yml ps

10. Harbor备份恢复

本节介绍Harbor的备份和恢复方法。

10.1 Harbor备份

# 停止Harbor
# cd /data/harbor
# docker-compose down

# 备份数据
# cp -r /data/harbor/data /backup/harbor_data_$(date +%Y%m%d)
# cp -r /data/harbor/config /backup/harbor_config_$(date +%Y%m%d)
# cp /data/harbor/harbor.yml /backup/harbor_yml_$(date +%Y%m%d)

# 启动Harbor
# docker-compose up -d

# 验证备份
# ls -la /backup/

10.2 Harbor恢复

# 停止Harbor
# cd /data/harbor
# docker-compose down

# 恢复数据
# rm -rf /data/harbor/data
# rm -rf /data/harbor/config
# cp -r /backup/harbor_data_20240405 /data/harbor/data
# cp -r /backup/harbor_config_20240405 /data/harbor/config
# cp /backup/harbor_yml_20240405 /data/harbor/harbor.yml

# 启动Harbor
# ./prepare
# ./install.sh

# 验证恢复
# docker-compose -f docker-compose.yml ps
# 打开浏览器访问 https://harbor.fgedu.net.cn

10.3 Harbor监控脚本

# 创建Harbor监控脚本
# vi /data/harbor/scripts/harbor_monitor.sh

#!/bin/bash
LOG_FILE=”/var/log/harbor_monitor.log”
ALERT_EMAIL=”admin@fgedu.net.cn”

check_harbor_status() {
echo “$(date): Checking harbor status…” >> $LOG_FILE
status=$(curl -s -o /dev/null -w “%{http_code}” https://harbor.fgedu.net.cn)
if [ “$status” = “200” ]; then
echo “$(date): Harbor status: OK” >> $LOG_FILE
else
echo “$(date): Harbor status: FAILED” >> $LOG_FILE
echo “Harbor service failed” | mail -s “Harbor Alert” $ALERT_EMAIL
fi
}

check_container_status() {
echo “$(date): Checking container status…” >> $LOG_FILE
containers=$(docker-compose -f /data/harbor/docker-compose.yml ps -q | wc -l)
running_containers=$(docker-compose -f /data/harbor/docker-compose.yml ps | grep Up | wc -l)
echo “$(date): Total containers: $containers, Running containers: $running_containers” >> $LOG_FILE
if [ “$containers” -ne “$running_containers” ]; then
echo “$(date): Not all containers are running” >> $LOG_FILE
echo “Not all containers are running: $running_containers/$containers” | mail -s “Harbor Alert” $ALERT_EMAIL
fi
}

check_storage_usage() {
echo “$(date): Checking storage usage…” >> $LOG_FILE
usage=$(df -h /data/harbor | awk ‘NR==2 {print $5}’ | sed ‘s/%//’)
echo “$(date): Storage usage: $usage%” >> $LOG_FILE
if [ “$usage” -gt “80” ]; then
echo “$(date): Storage usage too high: $usage%” >> $LOG_FILE
echo “Storage usage too high: $usage%” | mail -s “Harbor Alert” $ALERT_EMAIL
fi
}

main() {
check_harbor_status
check_container_status
check_storage_usage
}

main

# 添加执行权限
# chmod +x /data/harbor/scripts/harbor_monitor.sh

# 添加定时任务
# crontab -e
*/15 * * * * /data/harbor/scripts/harbor_monitor.sh

生产环境建议:定期备份Harbor数据,建议每天执行一次完整备份。监控脚本建议每15分钟执行一次,及时发现并处理问题。恢复操作前务必停止Harbor服务,避免数据不一致。

通过以上步骤,Harbor安装配置、性能优化、升级迁移、备份恢复等内容已全部完成。Harbor作为企业级镜像仓库,能够高效地管理和存储容器镜像,是企业级容器平台的重要组成部分。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息