手把手搭建Docker+Harbor私有镜像仓库:全流程实战指南

引言

在容器化技术快速发展的今天,Docker已成为开发、测试和部署应用的标准工具。然而,随着项目规模的扩大,如何高效、安全地管理大量容器镜像成为开发者必须面对的问题。Harbor作为一款开源的企业级Docker镜像仓库管理工具,提供了镜像存储、访问控制、安全扫描等功能,能够有效解决这一痛点。本文将手把手教你从零开始搭建Docker+Harbor私有镜像仓库,并详细介绍镜像推送的全流程。

一、环境准备

1.1 服务器要求

  • 操作系统:推荐使用CentOS 7/8或Ubuntu 18.04/20.04 LTS。
  • 硬件配置:至少2核CPU、4GB内存、20GB磁盘空间(根据实际镜像存储需求调整)。
  • 网络配置:确保服务器有稳定的公网或内网IP,且防火墙开放相关端口(如80、443、22等)。

1.2 软件依赖

  • Docker:最新稳定版,用于运行Harbor容器。
  • Docker Compose:用于定义和运行多个Docker容器的工具。
  • Harbor:最新稳定版,可从官方GitHub仓库获取。

二、Docker安装与配置

2.1 安装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. # 启动Docker并设置开机自启
  10. sudo systemctl start docker
  11. sudo systemctl enable docker

2.2 验证Docker安装

  1. sudo docker run hello-world

看到“Hello from Docker!”的输出,表示Docker安装成功。

三、Harbor安装与配置

3.1 下载Harbor

从Harbor官方GitHub仓库下载最新稳定版:

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

3.2 配置Harbor

编辑harbor.yml文件,修改以下关键配置:

  1. # 主机名,需为服务器的IP或域名
  2. hostname: your-server-ip-or-domain
  3. # HTTP/HTTPS配置,生产环境建议使用HTTPS
  4. https:
  5. # 证书路径(自签名证书需提前生成)
  6. certificate: /path/to/your/certificate.pem
  7. private_key: /path/to/your/private_key.pem
  8. # 管理员密码
  9. harbor_admin_password: Harbor12345
  10. # 数据库配置(默认使用内置数据库,生产环境建议外部数据库)
  11. database:
  12. password: root123
  13. # 其他数据库配置...
  14. # 存储驱动(默认使用filesystem,支持s3、swift等)
  15. storage_driver:
  16. name: filesystem
  17. # 其他存储配置...

3.3 安装Harbor

执行安装脚本:

  1. sudo ./install.sh

安装完成后,访问https://your-server-ip-or-domain(如果是HTTP,则访问http://your-server-ip-or-domain),使用默认管理员账号admin和配置的密码登录。

四、Harbor安全设置

4.1 启用HTTPS

生产环境必须启用HTTPS以保障数据传输安全。自签名证书生成步骤如下:

  1. # 生成私钥
  2. openssl genrsa -out private_key.pem 2048
  3. # 生成证书签名请求(CSR)
  4. openssl req -new -key private_key.pem -out csr.pem
  5. # 生成自签名证书(有效期365天)
  6. openssl x509 -req -days 365 -in csr.pem -signkey private_key.pem -out certificate.pem

将生成的certificate.pemprivate_key.pem复制到Harbor配置文件中指定的路径,并重启Harbor服务。

4.2 访问控制

Harbor支持基于角色的访问控制(RBAC),可以创建项目、用户和角色,并分配不同的权限。在Web界面中,通过“系统管理”->“用户管理”和“项目管理”进行配置。

五、镜像推送全流程

5.1 登录Harbor

在需要推送镜像的Docker客户端上,执行以下命令登录Harbor:

  1. docker login your-server-ip-or-domain

输入管理员账号或具有推送权限的账号密码。

5.2 标记镜像

将本地镜像标记为Harbor仓库中的镜像:

  1. docker tag your-image-name:tag your-server-ip-or-domain/your-project-name/your-image-name:tag

例如:

  1. docker tag nginx:latest your-server-ip-or-domain/myproject/nginx:latest

5.3 推送镜像

将标记后的镜像推送到Harbor仓库:

  1. docker push your-server-ip-or-domain/your-project-name/your-image-name:tag

例如:

  1. docker push your-server-ip-or-domain/myproject/nginx:latest

5.4 验证镜像

在Harbor Web界面中,进入对应的项目,查看已推送的镜像。

六、高级功能与优化

6.1 镜像复制

Harbor支持镜像复制功能,可以在不同的Harbor实例或Docker Registry之间同步镜像。通过“系统管理”->“复制管理”进行配置。

6.2 漏洞扫描

Harbor集成了Clair漏洞扫描工具,可以自动扫描上传的镜像中的安全漏洞。在项目设置中启用漏洞扫描功能。

6.3 性能优化

  • 使用外部数据库:生产环境建议使用MySQL或PostgreSQL作为Harbor的数据库,以提高性能。
  • 使用对象存储:对于大规模镜像存储,建议使用S3、Swift等对象存储服务。
  • 负载均衡:对于高并发场景,可以使用Nginx或HAProxy进行负载均衡。

七、总结

本文详细介绍了Docker+Harbor私有镜像仓库的搭建与实战指南,从环境准备、Docker安装与配置、Harbor安装与配置、安全设置到镜像推送全流程,涵盖了Harbor使用的各个方面。通过搭建私有镜像仓库,开发者可以高效、安全地管理容器镜像,提高开发、测试和部署的效率。希望本文能对你有所帮助!