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版本相比之前版本在性能、稳定性和功能方面都有显著提升,支持更多的企业级特性。
$ 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.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
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 依赖服务安装
# 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 防火墙配置
# 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
# 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
# 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
# 打开浏览器访问 https://harbor.fgedu.net.cn
# 登录Harbor
# 用户名:admin
# 密码:Harbor12345
# 验证登录
# 登录后可以看到Harbor的Web界面,包含项目、镜像、用户等管理功能
5. Harbor配置优化
为了提高Harbor的性能和稳定性,需要进行一些配置优化。
5.1 存储配置优化
# 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 数据库配置优化
# 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配置优化
# 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 项目管理
# 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 镜像扫描
# 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集成
# 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 资源配置优化
# 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版本升级
# 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配置迁移
# 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备份
# 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恢复
# 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监控脚本
# 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安装配置、性能优化、升级迁移、备份恢复等内容已全部完成。Harbor作为企业级镜像仓库,能够高效地管理和存储容器镜像,是企业级容器平台的重要组成部分。
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
