Docker私有镜像仓库部署指南:基于Harbor的完整实践

一、环境准备与基础组件安装

在部署Harbor前需完成基础环境配置,这是保障后续服务稳定运行的前提条件。以下步骤以CentOS 7系统为例,其他Linux发行版需调整对应命令。

1.1 系统安全策略调整

为避免防火墙规则和SELinux策略干扰服务通信,需进行以下配置:

  1. # 永久关闭防火墙服务
  2. systemctl stop firewalld
  3. systemctl disable firewalld
  4. # 临时关闭SELinux(重启失效)
  5. setenforce 0
  6. # 永久生效需修改配置文件
  7. sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

建议通过getenforce命令验证SELinux状态,确保输出结果为Disabled

1.2 主机名解析配置

编辑/etc/hosts文件建立域名映射,避免后续访问出现证书错误:

  1. echo "192.168.79.10 my.harbor.com" >> /etc/hosts

可通过ping my.harbor.com测试解析是否生效,此配置在多节点部署时尤为重要。

1.3 Docker引擎安装

推荐使用官方仓库安装最新稳定版:

  1. # 添加Docker官方仓库
  2. yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. # 安装指定版本(示例为19.03.15)
  4. yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io
  5. # 配置开机自启
  6. systemctl enable --now docker

安装完成后建议执行docker version验证服务状态,重点关注客户端/服务端版本是否匹配。

1.4 服务编排工具部署

Docker Compose作为容器编排核心工具,建议安装最新稳定版:

  1. # 下载二进制文件(自动适配系统架构)
  2. COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep tag_name | cut -d'"' -f4)
  3. curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  4. # 添加执行权限
  5. chmod +x /usr/local/bin/docker-compose

可通过docker-compose --version验证安装结果,典型输出应包含版本号和构建日期。

二、Harbor核心组件部署

完成基础环境准备后,进入私有仓库部署阶段。以下步骤包含离线安装包的获取与配置优化。

2.1 安装包获取与解压

从官方托管仓库获取离线安装包(以v2.5.3为例):

  1. wget https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz
  2. # 创建工作目录并解压
  3. mkdir -p /opt/harbor && tar -zxvf harbor-offline-installer-v2.5.3.tgz -C /opt/harbor
  4. cd /opt/harbor

建议将安装包存放在独立分区,避免后续升级时出现空间不足问题。

2.2 核心配置文件解析

harbor.yml是系统核心配置文件,需重点关注以下参数:

  1. hostname: my.harbor.com # 必须与hosts文件配置一致
  2. http:
  3. port: 80 # HTTP访问端口
  4. https:
  5. port: 443 # HTTPS强制跳转端口
  6. certificate: /data/cert/server.crt # 证书路径
  7. private_key: /data/cert/server.key
  8. harbor_admin_password: Harbor12345 # 初始管理员密码
  9. data_volume: /data/harbor # 数据持久化目录

安全建议

  • 生产环境必须启用HTTPS
  • 密码复杂度需符合企业安全策略
  • 数据目录建议使用独立磁盘挂载

2.3 安装脚本执行

执行自动化安装脚本前需确保:

  1. 已安装docker-compose
  2. 当前用户具有sudo权限
  3. 80/443端口未被占用
  1. # 生成配置并启动服务
  2. ./install.sh --with-trivy # --with-trivy启用镜像漏洞扫描

安装过程包含以下关键步骤:

  1. 生成Docker Compose配置文件
  2. 拉取依赖镜像(约1.2GB)
  3. 启动核心服务容器
  4. 初始化数据库

可通过docker-compose ps查看服务状态,所有容器应显示Up状态。

三、高级配置与运维实践

完成基础部署后,需进行以下优化以满足企业级需求。

3.1 存储后端配置

默认使用本地存储,生产环境建议配置对象存储:

  1. # 在harbor.yml中添加存储配置
  2. storage_service:
  3. oss:
  4. accesskey: your-access-key
  5. secretkey: your-secret-key
  6. region: your-region
  7. bucket: harbor-images

配置后需重启服务使变更生效:

  1. cd /opt/harbor
  2. docker-compose down && docker-compose up -d

3.2 访问控制策略

Harbor支持多种认证方式,典型配置包括:

  • LDAP集成:对接企业AD系统
  • OIDC认证:支持OAuth2.0协议
  • 机器人账户:用于CI/CD流水线

创建机器人账户示例:

  1. # 通过REST API创建(需先获取admin token)
  2. curl -X POST -H "Content-Type: application/json" \
  3. -d '{"name": "ci-robot", "level": "system", "access": [{"resource": "library", "action": "push"}]}' \
  4. "http://my.harbor.com/api/v2.0/robots" -u "admin:Harbor12345"

3.3 监控告警集成

建议集成主流监控系统实现可视化运维:

  1. Prometheus集成:暴露/metrics端点
  2. 日志收集:配置Filebeat收集容器日志
  3. 告警规则:设置磁盘空间、响应时间等阈值

示例Prometheus配置片段:

  1. scrape_configs:
  2. - job_name: 'harbor'
  3. static_configs:
  4. - targets: ['my.harbor.com:9090']

四、常见问题处理

4.1 证书配置错误

当出现x509: certificate signed by unknown authority错误时:

  1. 检查证书路径是否正确
  2. 确认证书包含SAN字段
  3. 在客户端配置信任链:
    1. # 将CA证书添加到系统信任库
    2. cp ca.crt /etc/pki/ca-trust/source/anchors/
    3. update-ca-trust

4.2 存储空间不足

当出现no space left on device错误时:

  1. 清理无用镜像:
    1. # 登录Harbor CLI
    2. docker login my.harbor.com
    3. # 删除特定项目下的镜像
    4. curl -X DELETE "http://my.harbor.com/api/v2.0/projects/library/repositories/nginx" -u "admin:Harbor12345"
  2. 扩展存储容量或配置垃圾回收:
    1. # 执行垃圾回收(需停止服务)
    2. cd /opt/harbor
    3. docker-compose down
    4. ./prepare --with-trivy
    5. docker-compose up -d

4.3 性能优化建议

  • 数据库调优:调整PostgreSQL的shared_buffers参数
  • 缓存配置:启用Redis作为会话缓存
  • 网络优化:配置HTTP/2协议提升传输效率

五、升级与维护流程

建议每季度进行版本升级,典型流程如下:

  1. 备份数据目录和数据库
  2. 下载新版本安装包
  3. 更新配置文件(注意新增参数)
  4. 执行升级脚本:
    1. cd /opt/harbor
    2. ./upgrade.sh --with-trivy
  5. 验证服务状态和功能完整性

通过以上系统化的部署与运维实践,可构建满足企业级需求的容器镜像管理平台。实际部署时需根据具体业务场景调整配置参数,建议先在测试环境验证所有变更。