华为欧拉系统实战:Docker Compose部署ARM64版Harbor全指南

在信创产业快速发展的背景下,越来越多的企业开始将核心业务系统迁移到国产化平台。作为华为自主研发的操作系统,欧拉(openEuler)凭借其优异的性能和对ARM架构的深度优化,正成为企业级应用部署的热门选择。本文将带你在欧拉系统上,从零开始搭建一个稳定高效的Harbor私有镜像仓库,解决ARM64架构下的容器镜像管理难题。

1. 环境准备与基础配置

欧拉系统作为CentOS的替代方案,在软件包管理和系统配置上有其独特之处。首先确保你的系统版本符合要求:

cat /etc/openEuler-release

推荐使用openEuler 20.03 LTS及以上版本,内核版本不低于4.19。对于ARM64架构,华为鲲鹏处理器能提供最佳性能表现。

1.1 安装Docker引擎

欧拉系统的默认软件源已经包含Docker CE版本,但建议使用官方源获取最新稳定版:

# 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 添加Docker官方源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 替换为ARM64架构
sudo sed -i 's/x86_64/aarch64/g' /etc/yum.repos.d/docker-ce.repo

# 安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io

启动Docker并设置开机自启:

sudo systemctl enable --now docker

验证安装:

docker version --format '{{.Server.Architecture}}'

预期输出应为 aarch64 ,确认ARM64架构支持。

1.2 安装Docker Compose

虽然欧拉软件源提供了docker-compose,但版本可能较旧。建议直接从GitHub获取最新版本:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

验证安装:

docker-compose version

2. Harbor部署前关键配置

2.1 系统参数调优

欧拉系统默认的安全策略可能影响Harbor运行,需要进行适当调整:

# 临时关闭SELinux
sudo setenforce 0

# 永久关闭(需重启生效)
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 调整系统限制
echo "fs.file-max = 1000000" | sudo tee -a /etc/sysctl.conf
echo "vm.max_map_count = 262144" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

2.2 防火墙配置

欧拉系统使用firewalld作为默认防火墙,需要开放必要端口:

sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=4443/tcp
sudo firewall-cmd --reload

3. Harbor ARM64版部署实战

3.1 获取ARM64专用安装包

由于官方Harbor镜像不直接支持ARM64架构,我们需要使用专为鲲鹏平台适配的版本:

wget https://obs-community.obs.cn-north-4.myhuaweicloud.com/harbor-arm64/v2.6.1/harbor-offline-installer-v2.6.1-arm64.tgz

tar xzvf harbor-offline-installer-v2.6.1-arm64.tgz
cd harbor

3.2 配置文件深度定制

harbor.yml 是Harbor的核心配置文件,以下为关键参数说明:

hostname: registry.yourdomain.com  # 替换为你的域名或IP

# 数据持久化配置
data_volume: /data/harbor  # 建议使用高性能存储

# 数据库配置
database:
  password: "StrongPassword123"
  max_idle_conns: 50
  max_open_conns: 100

# 存储后端(默认使用本地存储)
storage_service:
  filesystem:
    rootdirectory: /data/harbor/registry

对于生产环境,建议启用HTTPS并配置证书:

https:
  port: 443
  certificate: /data/certs/registry.yourdomain.com.crt
  private_key: /data/certs/registry.yourdomain.com.key

3.3 安装与初始化

执行安装脚本前,确保当前用户对安装目录有写权限:

sudo chown -R $(whoami) /data/harbor

开始安装:

./install.sh --with-trivy --with-chartmuseum

提示: --with-trivy 添加漏洞扫描功能, --with-chartmuseum 支持Helm charts存储

安装完成后,检查服务状态:

docker-compose ps

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

4. 运维管理与高级功能

4.1 日常运维命令

操作 命令
启动所有服务 docker-compose start
停止所有服务 docker-compose stop
重启单个服务 docker-compose restart <service_name>
查看日志 docker-compose logs -f

4.2 数据备份与恢复

Harbor的数据主要包括数据库、配置文件和存储的镜像。以下是备份方案:

# 创建备份目录
mkdir -p /backup/harbor/$(date +%Y%m%d)

# 备份数据库
docker exec -i harbor-db pg_dump -U postgres registry > /backup/harbor/$(date +%Y%m%d)/registry.sql

# 备份配置文件
cp -r /data/harbor /backup/harbor/$(date +%Y%m%d)/data

# 备份镜像存储
rsync -av /data/harbor/registry /backup/harbor/$(date +%Y%m%d)/

恢复时,先停止Harbor服务,然后逆向操作即可。

4.3 性能监控与优化

对于大规模使用的Harbor实例,建议启用Prometheus监控:

# 在harbor.yml中添加
metrics:
  enabled: true
  port: 9090

然后重新部署:

docker-compose down -v
./install.sh

可以通过Grafana配置监控面板,关键指标包括:

  • 镜像推送/拉取速率
  • 存储空间使用情况
  • API请求延迟
  • 数据库连接池状态

5. 故障排查与常见问题

5.1 容器启动失败排查

如果某些容器未能正常启动,可按以下步骤排查:

  1. 查看特定容器日志:
docker-compose logs -f <service_name>
  1. 检查挂载点权限:
sudo chown -R 10000:10000 /data/harbor
  1. 数据库连接问题:
docker exec -it harbor-db psql -U postgres

5.2 ARM64特有问题解决

问题1 :镜像兼容性错误

症状: exec format error no matching manifest for linux/arm64

解决方案:确保所有镜像都是ARM64版本,重新拉取专用镜像:

docker pull goharbor/harbor-core:v2.6.1-arm64

问题2 :性能瓶颈

在鲲鹏处理器上,可启用以下优化:

# 调整Docker守护进程配置
echo '{"default-runtime": "nvidia", "runtimes": {"nvidia": {"path": "nvidia-container-runtime","runtimeArgs": []}}}' | sudo tee /etc/docker/daemon.json

sudo systemctl restart docker

在实际项目中,我们发现欧拉系统上的Harbor部署最常遇到的坑是存储权限和SELinux配置。特别是在升级过程中,建议先做好完整备份。对于企业级部署,可以考虑使用分布式存储后端如Ceph或MinIO,这能显著提高大规模镜像推送的性能和可靠性。

更多推荐