Docker+Harbor实战指南:从零搭建私有镜像仓库并推送镜像

一、引言:为何需要私有镜像仓库?

在容器化部署日益普及的今天,Docker已成为开发、测试和运维的标准工具。然而,使用公共镜像仓库(如Docker Hub)存在安全隐患、网络依赖及速率限制等问题。私有镜像仓库不仅能提升安全性,还能加速内部镜像分发,尤其适合企业级开发场景。本文将通过Docker+Harbor组合,手把手教你搭建私有镜像仓库,并完成镜像的推送与拉取。

二、环境准备:前置条件与工具安装

1. 服务器要求

  • 操作系统:推荐CentOS 7/8或Ubuntu 20.04 LTS。
  • 硬件配置:至少2核CPU、4GB内存、20GB磁盘空间(根据镜像数量调整)。
  • 网络要求:开放80(HTTP)、443(HTTPS)、22(SSH)端口。

2. 安装Docker

Harbor依赖Docker运行,需先安装Docker引擎:

  1. # CentOS 7示例
  2. sudo yum install -y yum-utils
  3. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  4. sudo yum install docker-ce docker-ce-cli containerd.io
  5. sudo systemctl enable --now docker

验证安装:

  1. docker --version

3. 安装Docker Compose

Harbor通过Docker Compose部署,需安装v1.29+版本:

  1. sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  2. sudo chmod +x /usr/local/bin/docker-compose

验证安装:

  1. docker-compose --version

三、Harbor安装与配置:从下载到启动

1. 下载Harbor安装包

访问Harbor官方GitHub,选择最新稳定版(如v2.9.0),下载离线安装包:

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

2. 配置Harbor

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

  1. hostname: reg.yourdomain.com # 替换为实际域名或IP
  2. http:
  3. port: 80
  4. https:
  5. certificate: /path/to/cert.pem # HTTPS证书路径(可选)
  6. private_key: /path/to/key.pem
  7. harbor_admin_password: Harbor12345 # 默认管理员密码
  8. database:
  9. password: root123 # 数据库密码

注意事项

  • 若使用HTTPS,需提前准备SSL证书(如Let’s Encrypt免费证书)。
  • 生产环境建议修改默认密码并启用HTTPS。

3. 运行安装脚本

执行以下命令启动Harbor:

  1. sudo ./install.sh

安装完成后,访问http://<hostname>,使用默认账号admin和密码Harbor12345登录。

四、实战操作:镜像推送与拉取

1. 登录Harbor仓库

在本地Docker环境登录Harbor:

  1. docker login reg.yourdomain.com

输入用户名(如admin)和密码。

2. 标记并推送镜像

以推送nginx镜像为例:

  1. # 拉取官方镜像
  2. docker pull nginx:latest
  3. # 标记镜像(替换为实际Harbor地址)
  4. docker tag nginx:latest reg.yourdomain.com/library/nginx:v1
  5. # 推送镜像
  6. docker push reg.yourdomain.com/library/nginx:v1

常见问题

  • 若推送失败,检查防火墙是否放行端口,或确认Harbor服务是否正常运行。
  • 镜像命名需遵循<harbor_addr>/<project>/<image>:<tag>格式。

3. 从Harbor拉取镜像

在其他机器拉取镜像:

  1. docker login reg.yourdomain.com
  2. docker pull reg.yourdomain.com/library/nginx:v1

五、高级功能:项目管理与用户权限

1. 创建项目

登录Harbor Web界面,点击新建项目,输入项目名(如dev-team),选择访问级别(公开/私有)。

2. 添加用户与分配角色

  • 用户管理:在系统管理→用户中添加用户,设置密码。
  • 角色分配:在项目→成员中添加用户,分配角色(如开发者可推送镜像,访客仅可拉取)。

3. 机器人账号(Robot Account)

为CI/CD流水线创建机器人账号:

  1. 在项目设置中生成机器人账号。
  2. 使用生成的账号和Token登录Docker:
    1. docker login reg.yourdomain.com --username=<robot_name> --password=<token>

六、维护与优化:备份与性能调优

1. 数据备份

Harbor数据存储在/data目录,定期备份:

  1. sudo tar -czvf harbor_backup_$(date +%Y%m%d).tar.gz /data

2. 性能优化

  • 存储驱动:根据需求选择overlay2devicemapper
  • 资源限制:在docker-compose.yml中调整coreregistry等服务的CPU/内存限制。

七、总结:私有镜像仓库的价值

通过Docker+Harbor搭建私有镜像仓库,开发者可实现:

  • 安全可控:避免敏感镜像泄露。
  • 高效分发:内部网络加速镜像拉取。
  • 灵活管理:支持多项目、多用户权限控制。

下一步建议

  • 集成CI/CD工具(如Jenkins、GitLab CI)实现自动化镜像构建与推送。
  • 探索Harbor的复制功能,实现多地域镜像同步。

本文从环境准备到实战操作,完整覆盖了Harbor私有仓库的搭建流程。按步骤操作,你将在1小时内完成部署并推送首个镜像!