手把手Docker+Harbor私有仓库搭建:从安装到推送全攻略

引言:为什么需要私有镜像仓库?

在容器化部署日益普及的今天,Docker已成为开发运维的标准工具。然而,公共镜像仓库(如Docker Hub)存在网络延迟、安全风险及配额限制等问题。对于企业级应用,搭建私有镜像仓库(如Harbor)成为保障效率与安全的关键选择。本文将通过“手把手”教学,从零开始完成Docker与Harbor的安装、配置及镜像推送全流程。

一、环境准备:基础条件与工具安装

1.1 服务器要求

  • 操作系统:推荐CentOS 7/8或Ubuntu 20.04 LTS(需支持Docker)
  • 硬件配置:至少4核CPU、8GB内存、50GB磁盘空间(根据镜像规模调整)
  • 网络环境:需开放80(HTTP)、443(HTTPS)、22(SSH)端口,建议配置内网DNS解析

1.2 Docker安装

以CentOS为例:

  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 enable --now docker

验证安装:

  1. docker --version
  2. docker run hello-world

二、Harbor安装与配置:私有仓库核心

2.1 Harbor下载与安装

  1. 下载Harbor(以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. 修改配置文件

    1. cp harbor.yml.tmpl harbor.yml
    2. vi harbor.yml

    关键配置项:

    1. hostname: harbor.example.com # 替换为实际域名或IP
    2. http:
    3. port: 80
    4. https:
    5. certificate: /data/cert/server.crt # 需提前准备SSL证书
    6. private_key: /data/cert/server.key
    7. harbor_admin_password: Harbor12345 # 初始管理员密码
    8. database:
    9. password: root123 # 数据库密码
  3. 执行安装

    1. sudo ./install.sh

    安装完成后,访问https://harbor.example.com,使用默认账号admin和配置的密码登录。

2.2 Harbor核心功能配置

  • 项目创建:在Web界面创建项目(如myapp),可设置公开/私有权限。
  • 用户管理:添加普通用户并分配项目角色(如开发者、访客)。
  • 复制策略:配置与其他Harbor实例或Docker Hub的镜像同步规则。
  • 日志审计:通过/var/log/harbor/目录查看操作日志。

三、Docker与Harbor认证配置

3.1 登录Harbor仓库

  1. docker login harbor.example.com
  2. # 输入用户名和密码

3.2 配置Docker信任证书(HTTPS场景)

若Harbor使用自签名证书,需将CA证书添加到Docker信任列表:

  1. sudo mkdir -p /etc/docker/certs.d/harbor.example.com
  2. sudo cp /data/cert/server.crt /etc/docker/certs.d/harbor.example.com/ca.crt
  3. sudo systemctl restart docker

四、镜像推送实战:从构建到上传

4.1 镜像构建与标记

  1. 构建镜像

    1. docker build -t myapp:v1 .
  2. 标记镜像(指定Harbor仓库):

    1. docker tag myapp:v1 harbor.example.com/myapp/myapp:v1

4.2 推送镜像到Harbor

  1. docker push harbor.example.com/myapp/myapp:v1

常见问题处理

  • 权限错误:检查docker login是否成功,确认用户有项目写入权限。
  • 证书错误:重新配置Docker信任证书。
  • 网络问题:检查防火墙规则是否放行443端口。

4.3 从Harbor拉取镜像

  1. docker pull harbor.example.com/myapp/myapp:v1

五、高级功能与运维建议

5.1 自动化构建与CI/CD集成

  • Jenkins集成:通过Pipeline脚本实现镜像构建、推送和部署自动化。
    1. pipeline {
    2. agent any
    3. stages {
    4. stage('Build') {
    5. steps {
    6. sh 'docker build -t myapp:v1 .'
    7. sh 'docker tag myapp:v1 harbor.example.com/myapp/myapp:v1'
    8. }
    9. }
    10. stage('Push') {
    11. steps {
    12. withCredentials([usernamePassword(credentialsId: 'harbor-cred', usernameVariable: 'USER', passwordVariable: 'PASS')]) {
    13. sh 'docker login -u $USER -p $PASS harbor.example.com'
    14. sh 'docker push harbor.example.com/myapp/myapp:v1'
    15. }
    16. }
    17. }
    18. }
    19. }

5.2 镜像清理与存储优化

  • 定期清理未使用的镜像
    1. # 在Harbor服务器执行
    2. docker run -it --name gc --rm --network host goharbor/harbor-gc:v2.5.3
  • 设置存储配额:在Harbor Web界面的“系统管理”→“存储配额”中限制项目存储空间。

5.3 高可用部署方案

  • 多节点Harbor集群:通过共享存储(如NFS)和数据库主从复制实现高可用。
  • 负载均衡:使用Nginx或HAProxy分发请求到多个Harbor实例。

六、安全加固最佳实践

  1. 强制HTTPS:禁用HTTP访问,配置SSL证书并启用HSTS。
  2. 定期更新密码:每90天轮换管理员密码。
  3. 镜像扫描:启用Harbor内置的Clair扫描器,定期检查漏洞。
  4. 网络隔离:将Harbor部署在私有子网,仅允许特定IP访问管理界面。

总结:私有仓库的价值与未来

通过本文的“手把手”教学,读者已掌握从Docker基础安装到Harbor私有仓库搭建、认证配置及镜像推送的全流程。私有镜像仓库不仅能提升部署效率,更是保障企业代码安全的核心基础设施。随着容器技术的演进,Harbor的AI驱动扫描、多云镜像管理等高级功能将进一步释放价值。建议开发者定期关注Harbor官方文档(https://goharbor.io)更新,持续优化私有仓库运维体系。