Docker+Harbor私有仓库搭建指南:从安装到镜像推送全流程解析

引言

在容器化技术日益普及的今天,Docker已成为开发、测试和部署应用的标准工具。然而,随着团队规模扩大和项目复杂度增加,如何安全、高效地管理Docker镜像成为关键问题。Harbor作为一款开源的企业级私有镜像仓库,提供了权限控制、镜像复制、漏洞扫描等核心功能,是构建私有镜像仓库的理想选择。本文将详细介绍从Docker与Harbor的安装到镜像推送的全流程,帮助开发者快速搭建并使用私有镜像仓库。

一、环境准备与Docker安装

1.1 系统要求

Harbor官方推荐使用Linux系统(如CentOS 7/8、Ubuntu 18.04/20.04),需确保系统满足以下条件:

  • 内存:≥4GB(生产环境建议≥8GB)
  • 磁盘空间:≥40GB(根据镜像存储需求调整)
  • 操作系统:64位Linux发行版

1.2 Docker安装

以CentOS 7为例,执行以下步骤安装Docker:

  1. # 卸载旧版本(如有)
  2. sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  3. # 安装依赖
  4. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  5. # 添加Docker仓库
  6. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  7. # 安装Docker CE
  8. sudo yum install -y docker-ce docker-ce-cli containerd.io
  9. # 启动并设置开机自启
  10. sudo systemctl start docker
  11. sudo systemctl enable docker

验证安装:

  1. sudo docker run hello-world

看到”Hello from Docker!”表示安装成功。

二、Harbor安装与配置

2.1 下载Harbor

访问Harbor官方GitHub仓库(https://github.com/goharbor/harbor/releases),下载最新稳定版(如v2.5.3):

  1. wget https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz
  2. tar xvf harbor-offline-installer-v2.5.3.tgz
  3. cd harbor

2.2 配置Harbor

编辑harbor.yml文件,关键配置项如下:

  1. hostname: your.domain.com # 替换为实际域名或IP
  2. http:
  3. port: 80
  4. https: # 生产环境必须启用HTTPS
  5. certificate: /path/to/your/cert.pem
  6. private_key: /path/to/your/key.pem
  7. harbor_admin_password: Harbor12345 # 初始管理员密码
  8. database:
  9. password: root123 # 数据库密码

安全建议

  • 必须配置HTTPS,可使用Let’s Encrypt免费证书
  • 密码复杂度需符合企业安全策略
  • 建议配置数据卷持久化存储(如/data目录)

2.3 安装Harbor

执行安装脚本:

  1. sudo ./install.sh

安装完成后,访问https://your.domain.com(默认端口80/443),使用初始账号admin和配置的密码登录。

三、Harbor高级配置与安全加固

3.1 用户与权限管理

Harbor支持多种认证方式:

  • 数据库认证:默认方式,可在Web界面管理用户
  • LDAP/AD集成:适合企业环境
    1. # 在harbor.yml中配置LDAP
    2. auth_mode: ldap
    3. ldap:
    4. url: ldaps://ldap.example.com
    5. search_dn: uid=searchuser,ou=people,dc=example,dc=com
    6. search_pwd: password
    7. base_dn: ou=people,dc=example,dc=com
    8. uid: uid
    9. filter: (objectClass=person)
    10. scope: 2

3.2 项目与仓库权限

创建项目时,可设置:

  • 公开/私有:私有项目需授权才能访问
  • 成员角色:项目管理员、开发者、访客等
  • 机器人账号:用于CI/CD流水线自动推送镜像

3.3 镜像复制策略

配置镜像复制规则,实现多数据中心同步:

  1. 在”System Management”→”Replications”创建规则
  2. 选择源项目和目标Harbor实例
  3. 设置触发方式(手动/定时/事件驱动)

四、Docker镜像推送实战

4.1 登录Harbor仓库

  1. docker login your.domain.com
  2. # 输入用户名密码(或使用机器人账号token)

4.2 标记并推送镜像

假设本地有nginx:latest镜像,需推送到Harbor的library/nginx项目:

  1. # 标记镜像(项目名需存在)
  2. docker tag nginx:latest your.domain.com/library/nginx:v1
  3. # 推送镜像
  4. docker push your.domain.com/library/nginx:v1

常见问题

  • 错误denied: requested access to the resource is denied:项目不存在或无权限
  • 错误Get https://your.domain.com/v2/: x509: certificate signed by unknown authority:需在Docker客户端配置信任的CA证书

4.3 从Harbor拉取镜像

  1. docker pull your.domain.com/library/nginx:v1

五、运维与监控

5.1 日志管理

Harbor关键日志路径:

  • /var/log/harbor/:核心服务日志
  • /var/log/nginx/:访问日志
  • /var/log/jobs/:任务执行日志

5.2 性能监控

推荐使用Prometheus+Grafana监控方案:

  1. 在Harbor配置中启用Prometheus端点
  2. 部署Prometheus收集指标
  3. 使用Grafana导入Harbor官方仪表盘

5.3 备份与恢复

定期备份以下数据:

  • 数据库(/var/lib/postgresql/data
  • 配置文件(/etc/harbor/harbor.yml
  • 镜像存储(/data目录)

六、最佳实践

  1. 镜像命名规范:采用<项目>/<镜像>:<标签>格式,如devops/nginx:1.21-alpine
  2. 镜像清理策略:设置保留策略自动删除旧版本镜像
  3. 安全扫描:启用Clair或Trivy集成,定期扫描镜像漏洞
  4. 高可用部署:生产环境建议部署Harbor集群(需共享存储)

结语

通过本文的详细指导,开发者可以快速完成Docker与Harbor私有镜像仓库的搭建,并掌握镜像推送、权限管理等核心操作。Harbor的企业级功能能够有效解决镜像管理中的安全、效率问题,是容器化部署不可或缺的基础设施。建议读者在实际部署时,结合企业安全策略进行定制化配置,并定期进行安全审计和性能优化。