华为欧拉系统(openEuler)上,手把手教你用Docker Compose部署Harbor 1.10.2镜像仓库 在openEuler系统上部署Harbor镜像仓库的完整实践指南近年来随着国产化替代进程的加速越来越多的企业开始将业务系统迁移到国产操作系统和硬件平台上。作为国内领先的企业级Linux发行版华为openEuler系统凭借其优异的性能和稳定性正在成为众多关键业务场景的首选平台。与此同时容器化技术的普及也让Harbor这样的企业级镜像仓库解决方案变得愈发重要。本文将详细介绍如何在openEuler系统上部署Harbor 1.10.2版本镜像仓库。与常见的x86架构不同我们将重点关注ARM64aarch64架构下的部署细节包括环境准备、依赖安装、配置调整以及常见问题的解决方案。无论您是初次接触Harbor的开发者还是需要在国产化环境中实施容器化方案的运维工程师都能从本文中找到实用的操作指南。1. 环境准备与前置条件在开始部署Harbor之前我们需要确保openEuler系统满足所有必要的运行条件。与常见的CentOS或Ubuntu系统相比openEuler在软件包管理和系统配置上有一些独特之处需要特别注意。1.1 系统要求检查首先确认您的openEuler系统版本和架构信息cat /etc/openEuler-release uname -m输出应显示类似以下内容openEuler release 22.03 LTS aarch64Harbor对系统资源有一定要求建议配置CPU至少4核推荐8核内存至少8GB推荐16GB磁盘空间至少40GB用于存储镜像网络稳定的网络连接1.2 安装必要依赖openEuler使用dnf作为包管理器安装基础依赖包sudo dnf install -y curl wget tar git make gcc由于Harbor需要Docker和Docker Compose支持我们需要先安装它们。openEuler官方源中已经包含了这些软件包sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin安装完成后启动Docker服务并设置开机自启sudo systemctl enable --now docker验证Docker和Docker Compose版本docker --version docker compose version建议使用以下版本或更高Docker: 20.10.0Docker Compose: 2.0.02. 获取Harbor安装包与ARM64镜像由于官方Harbor镜像默认不支持ARM架构我们需要使用专门为ARM64编译的镜像版本。以下是几种获取方式2.1 下载ARM64适配的Harbor安装包推荐从可靠的镜像源下载已经包含ARM64镜像的离线安装包wget https://example.com/harbor-arm64-offline-v1.10.2.tgz注意实际URL可能因镜像源不同而变化建议从可信来源获取。2.2 手动拉取ARM64镜像如果您选择在线安装方式可以使用以下脚本拉取适配ARM64架构的Harbor组件镜像#!/bin/bash versionv1.10.2 repositoryregistry.example.com/arm64-mirror images( harbor-core harbor-db harbor-jobservice harbor-log nginx-photon harbor-portal prepare redis-photon registry-photon harbor-registryctl ) for image in ${images[]}; do docker pull ${repository}/goharbor-${image}:${version} docker tag ${repository}/goharbor-${image}:${version} goharbor/${image}:${version} docker rmi ${repository}/goharbor-${image}:${version} done2.3 解压安装包无论采用哪种方式获取安装包解压方法相同tar xzvf harbor-arm64-offline-v1.10.2.tgz -C /opt cd /opt/harbor3. 配置HarborHarbor的配置主要通过harbor.yml文件完成。在openEuler系统上有几个关键配置需要特别注意。3.1 基础配置编辑harbor.yml文件hostname: your.domain.com # 或使用IP地址 http: port: 8080 data_volume: /data/harbor database: password: strong_password harbor_admin_password: Harbor123453.2 openEuler特有配置针对openEuler系统需要调整以下参数# 禁用HTTPS如需启用请参考后续章节 https: enabled: false # 调整日志配置 log: level: info rotate_count: 50 rotate_size: 200M location: /var/log/harbor3.3 存储配置openEuler默认使用xfs文件系统建议为Harbor配置单独的分区sudo mkdir -p /data/harbor sudo chown -R 10000:10000 /data/harbor在harbor.yml中确认存储路径data_volume: /data/harbor4. 安装与启动Harbor完成配置后可以开始安装Harbor。4.1 执行安装脚本sudo ./install.sh安装过程会执行以下操作加载Docker镜像准备环境配置启动各个服务组件4.2 验证服务状态安装完成后检查容器运行状态docker compose ls docker ps正常情况下应该看到10个Harbor相关容器正在运行。4.3 防火墙配置如果openEuler启用了防火墙需要开放相应端口sudo firewall-cmd --add-port8080/tcp --permanent sudo firewall-cmd --reload5. 常见问题与解决方案在openEuler系统上部署Harbor可能会遇到一些特殊问题以下是常见问题的解决方法。5.1 容器启动失败如果某些容器无法启动首先检查日志docker logs container_name常见原因及解决方法权限问题sudo chown -R 10000:10000 /data/harbor数据库连接失败 检查PostgreSQL配置docker exec -it harbor-db bash psql -U postgres5.2 SELinux相关问题openEuler默认启用SELinux可能导致权限问题。临时解决方案sudo setenforce 0永久解决方案是配置正确的SELinux策略或添加适当的上下文sudo semanage fcontext -a -t container_file_t /data/harbor(/.*)? sudo restorecon -Rv /data/harbor5.3 性能优化建议针对ARM64架构可以调整以下参数提升性能修改PostgreSQL配置/data/harbor/database/postgresql.confshared_buffers 1GB effective_cache_size 3GB调整Redis配置docker exec -it harbor-redis redis-cli config set maxmemory 1gb6. 高级配置与维护Harbor部署完成后还需要进行一些必要的维护和高级配置。6.1 启用HTTPS虽然测试环境可以使用HTTP但生产环境强烈建议启用HTTPS。准备证书文件假设为harbor.crt和harbor.key修改harbor.ymlhttps: port: 443 certificate: /your/certificate/path/harbor.crt private_key: /your/certificate/path/harbor.key重新部署sudo ./install.sh --with-notary --with-trivy6.2 备份与恢复定期备份Harbor数据至关重要。备份应包括数据库数据/data/harbor/database配置文件/opt/harbor/harbor.yml镜像存储/data/harbor/registry可以使用以下命令创建备份tar czvf harbor-backup-$(date %Y%m%d).tgz /data/harbor /opt/harbor/harbor.yml6.3 版本升级升级Harbor版本时建议遵循以下步骤备份当前数据下载新版本安装包停止当前服务docker compose down -v迁移配置并安装新版本启动新服务7. 实际应用与集成Harbor部署完成后可以将其集成到您的CI/CD流程中。7.1 配置Docker客户端在需要使用Harbor的机器上配置Dockersudo mkdir -p /etc/docker/certs.d/your.domain.com sudo scp your.domain.com:/path/to/ca.crt /etc/docker/certs.d/your.domain.com/ sudo systemctl restart docker7.2 在Kubernetes中使用Harbor如果您使用Kubernetes可以配置集群使用Harbor作为私有镜像仓库创建secretkubectl create secret docker-registry harbor-secret \ --docker-serveryour.domain.com \ --docker-usernameadmin \ --docker-passwordHarbor12345在Pod定义中引用imagePullSecrets: - name: harbor-secret7.3 监控与日志管理建议配置Harbor的监控和日志收集启用Prometheus监控# 在harbor.yml中添加 metrics: enabled: true port: 9090配置日志轮转sudo vi /etc/logrotate.d/harbor添加内容/var/log/harbor/*.log { daily rotate 30 missingok compress delaycompress notifempty }在openEuler系统上成功部署Harbor后您将拥有一个功能完善的企业级镜像仓库能够满足国产化环境下的容器镜像管理需求。实际使用中建议定期检查系统资源使用情况并根据业务增长适时扩展存储容量。