华为欧拉/麒麟系统上Docker Compose部署Harbor 1.10.2全流程指南

在国产化技术快速发展的背景下,华为欧拉(openEuler)和麒麟(Kylin)操作系统正成为越来越多企业和开发者的选择。特别是在ARM架构服务器上部署私有镜像仓库Harbor,已成为国产化替代项目中的常见需求。本文将提供一份从零开始的详细部署指南,帮助您在华为欧拉或麒麟系统上顺利完成Harbor 1.10.2的安装与配置。

1. 环境准备与依赖安装

在开始部署Harbor之前,我们需要确保系统环境满足基本要求。华为欧拉和麒麟系统作为国产操作系统的代表,在软件生态上与常见的Linux发行版略有不同,因此需要特别注意依赖项的安装。

1.1 系统要求检查

首先确认您的系统架构和版本信息:

uname -m
cat /etc/os-release

对于Harbor 1.10.2,建议的系统配置如下:

组件 最低要求 推荐配置
CPU 2核 4核
内存 4GB 8GB
存储 40GB 100GB
系统 openEuler 20.03 LTS SP2或Kylin V10 最新稳定版

1.2 Docker与Docker Compose安装

由于Harbor基于容器技术,我们需要先安装Docker和Docker Compose。在华为欧拉/麒麟系统上,可以使用以下命令:

# 安装Docker CE
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io

# 启动Docker并设置开机自启
sudo systemctl enable --now docker

# 验证Docker安装
docker --version

对于Docker Compose的安装:

# 下载Docker Compose二进制文件
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 设置可执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version

注意:如果遇到下载速度慢的问题,可以考虑使用国内镜像源替换上述URL中的github.com地址。

2. Harbor安装包获取与准备

Harbor官方镜像默认不支持ARM架构,因此我们需要获取专门为ARM架构编译的镜像包。

2.1 下载ARM兼容的Harbor安装包

您可以从以下渠道获取适用于ARM架构的Harbor 1.10.2安装包:

  1. 官方社区提供的ARM版本(如果可用)
  2. 第三方可信源提供的预编译包
  3. 自行从源码编译(不推荐新手尝试)

这里我们使用离线安装包方式,避免网络问题影响部署:

# 创建工作目录
mkdir -p /opt/harbor && cd /opt/harbor

# 下载离线安装包(示例URL,请替换为实际可用地址)
wget https://example.com/harbor-arm64-offline-v1.10.2.tar.gz

# 验证下载完整性
sha256sum harbor-arm64-offline-v1.10.2.tar.gz

2.2 解压安装包

tar -zxvf harbor-arm64-offline-v1.10.2.tar.gz
cd harbor

解压后目录结构应包含以下关键文件和目录:

  • harbor.yml :主配置文件
  • install.sh :安装脚本
  • common :共享配置目录
  • docker-compose.yml :Compose配置文件
  • prepare :准备脚本目录

3. Harbor配置详解

正确的配置是Harbor顺利运行的关键。我们将详细讲解每个需要修改的配置项。

3.1 修改harbor.yml主配置

使用文本编辑器打开 harbor.yml 文件:

vi harbor.yml

需要关注的主要配置项包括:

# 主机名或IP地址(必须修改)
hostname: your.server.ip.or.domain

# 数据存储路径(建议修改)
data_volume: /data/harbor

# HTTP/HTTPS配置(根据实际情况选择)
http:
  port: 80
https:
  port: 443
  certificate: /your/certificate/path
  private_key: /your/private/key/path

# 管理员密码(建议修改)
harbor_admin_password: Harbor12345

# 数据库配置(保持默认或根据需求修改)
database:
  password: root123
  max_idle_conns: 50
  max_open_conns: 100

3.2 特定于ARM架构的配置调整

由于我们使用的是ARM架构,还需要做一些特殊配置:

  1. 确保所有镜像标签正确指向ARM版本
  2. 检查存储驱动兼容性
  3. 验证数据库连接配置

可以通过以下命令快速检查关键配置:

grep -E 'image:|volumes:' docker-compose.yml

4. 安装与验证

完成所有配置后,我们可以开始安装过程。

4.1 执行安装脚本

./install.sh

安装过程会执行以下操作:

  1. 加载Docker镜像
  2. 准备配置文件
  3. 创建必要的网络和卷
  4. 启动所有服务容器

安装完成后,您应该看到类似如下的输出:

✔ ----Harbor has been installed and started successfully.----

4.2 验证服务状态

使用以下命令检查容器运行状态:

docker-compose ps

预期输出应显示所有服务状态为"Up":

      Name                     Command                  State                Ports          
--------------------------------------------------------------------------------------------
harbor-core         /harbor/entrypoint.sh            Up                                     
harbor-db           /docker-entrypoint.sh            Up      5432/tcp                      
harbor-jobservice   /harbor/entrypoint.sh            Up                                     
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up      127.0.0.1:1514->10514/tcp    
harbor-portal       nginx -g daemon off;             Up      8080/tcp                      
nginx               nginx -g daemon off;             Up      0.0.0.0:80->8080/tcp, 443/tcp
redis               redis-server /etc/redis.conf     Up      6379/tcp                      
registry            /home/harbor/entrypoint.sh       Up      5000/tcp                      
registryctl         /home/harbor/start.sh            Up                                     

4.3 常见问题排查

如果遇到服务启动失败,可以按照以下步骤排查:

  1. 检查日志文件:
tail -f /var/log/harbor/core.log
  1. 验证文件权限:
sudo chown -R 10000:10000 /data/harbor
sudo chown -R 10000:10000 common/
  1. 数据库连接问题:
# 检查数据库配置文件
vi /data/harbor/database/postgresql.conf

# 确保包含以下配置
listen_addresses = '*'
unix_socket_directories = '/run/postgresql'

5. 高级配置与优化

成功部署后,我们可以进一步优化Harbor的性能和安全性。

5.1 配置HTTPS访问

为了安全考虑,建议配置HTTPS访问:

  1. 准备SSL证书(可自签名或从CA获取)
  2. 修改harbor.yml中的HTTPS配置节
  3. 重新部署:
./install.sh --with-notary --with-trivy --with-chartmuseum

5.2 存储后端配置

默认使用本地文件系统存储,可以配置为使用其他存储后端:

# 使用S3兼容存储的示例配置
storage_service:
  s3:
    accesskey: your_access_key
    secretkey: your_secret_key
    region: us-east-1
    bucket: your-bucket-name
    endpoint: https://s3.amazonaws.com
    secure: true

5.3 备份与恢复

定期备份Harbor数据非常重要:

# 备份数据库
docker exec -it harbor-db pg_dump -U postgres registry > registry_backup.sql

# 备份配置文件
tar -czvf harbor_backup_$(date +%Y%m%d).tar.gz /data/harbor /opt/harbor/harbor.yml

恢复时只需反向操作即可。

6. 日常管理与维护

Harbor运行后,需要定期进行维护以确保稳定运行。

6.1 服务启停

# 停止所有服务
docker-compose down

# 启动所有服务
docker-compose up -d

6.2 版本升级

升级Harbor版本时,建议遵循以下步骤:

  1. 备份当前数据和配置
  2. 下载新版本安装包
  3. 修改配置文件适配新版本
  4. 执行升级脚本

6.3 监控与日志

配置日志轮转:

# 编辑logrotate配置
vi /etc/logrotate.d/harbor

# 添加以下内容
/var/log/harbor/*.log {
    daily
    missingok
    rotate 30
    compress
    delaycompress
    notifempty
    create 640 root root
}

7. 安全最佳实践

为确保Harbor实例的安全性,建议实施以下措施:

7.1 访问控制

  1. 启用项目级别的访问控制
  2. 配置适当的用户角色
  3. 定期审计用户权限

7.2 漏洞扫描

集成Trivy进行镜像漏洞扫描:

# 安装Trivy插件
./install.sh --with-trivy

7.3 网络隔离

考虑将Harbor部署在内网环境中,或通过防火墙限制访问:

# 只允许特定IP访问80/443端口
iptables -A INPUT -p tcp --dport 80 -s trusted_ip -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -s trusted_ip -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP

8. 性能调优

根据实际使用情况,可以调整以下参数优化性能:

8.1 数据库调优

修改 /data/harbor/database/postgresql.conf :

max_connections = 200
shared_buffers = 1GB
effective_cache_size = 3GB

8.2 Redis配置

调整 docker-compose.yml 中的Redis部分:

redis:
  image: goharbor/redis-photon:v1.10.2
  container_name: redis
  restart: always
  environment:
    - REDIS_MAXMEMORY=1gb
    - REDIS_MAXMEMORY_POLICY=allkeys-lru

8.3 前端优化

配置Nginx缓存和压缩:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

更多推荐