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

一、环境准备与前提条件

1.1 服务器环境要求

  • 操作系统:推荐CentOS 7/8或Ubuntu 20.04 LTS,需支持Docker和Harbor运行。
  • 硬件配置:至少4核CPU、8GB内存、50GB存储空间(根据镜像规模调整)。
  • 网络要求:确保服务器有公网IP或内网可访问,开放80(HTTP)、443(HTTPS)、22(SSH)端口。
  • 依赖工具:安装Docker CE(版本≥19.03)、Docker Compose(Harbor依赖)、wget/curl。

1.2 安装Docker CE

以CentOS 7为例,执行以下命令:

  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. sudo docker run hello-world

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

2.1 下载Harbor安装包

访问Harbor官方GitHub仓库(https://github.com/goharbor/harbor/releases),选择最新稳定版(如v2.6.0),下载离线安装包:

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

2.2 配置Harbor

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

  1. hostname: registry.example.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 # 数据库密码
  10. storage_driver:
  11. name: filesystem # 存储驱动(支持filesystem/s3/swift等)
  12. fs_driver:
  13. rootdirectory: /data # 镜像存储路径

配置说明

  • hostname:必须为可解析的域名或IP,若使用HTTPS需配置证书。
  • storage_driver:生产环境建议使用对象存储(如S3)以提高可靠性。
  • password:强密码策略,避免使用默认值。

2.3 安装Harbor

执行安装脚本,自动完成依赖安装、数据库初始化等操作:

  1. sudo ./install.sh

安装完成后,访问http://hostname(如http://registry.example.com),使用默认账号admin和配置的密码登录。

三、Harbor高级配置与优化

3.1 启用HTTPS

  1. 生成证书(以自签名证书为例):
    1. openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
    2. -keyout /data/cert/harbor.key -out /data/cert/harbor.crt \
    3. -subj "/CN=registry.example.com"
  2. 修改harbor.yml
    1. https:
    2. port: 443
    3. certificate: /data/cert/harbor.crt
    4. private_key: /data/cert/harbor.key
  3. 重启Harbor
    1. docker-compose down -v
    2. docker-compose up -d

3.2 配置用户与项目

  • 创建用户:在Harbor Web界面“用户管理”中添加用户,分配角色(如开发者、管理员)。
  • 创建项目:在“项目”页面新建项目(如myapp),设置访问权限(公开/私有)。
  • 配置复制策略(可选):实现多仓库间镜像同步,提高可用性。

四、镜像推送与拉取实战

4.1 登录Harbor仓库

  1. docker login registry.example.com

输入用户名和密码,验证登录成功。

4.2 标记并推送镜像

  1. 标记本地镜像
    1. docker tag nginx:latest registry.example.com/myapp/nginx:v1
  2. 推送镜像
    1. docker push registry.example.com/myapp/nginx:v1

    常见问题

  • 权限拒绝:检查项目权限和用户角色。
  • 证书错误:若使用自签名证书,需在Docker客户端配置insecure-registries(仅测试环境)。

4.3 从Harbor拉取镜像

  1. docker pull registry.example.com/myapp/nginx:v1

五、运维与监控

5.1 日志管理

Harbor日志位于/var/log/harbor,关键日志文件:

  • core.log:核心服务日志。
  • registry.log:镜像存储日志。
  • database.log:数据库操作日志。

5.2 备份与恢复

  1. 备份数据
    1. # 备份数据库
    2. docker exec -it harbor-db pg_dump -U postgres -F c registry > /backup/registry.dump
    3. # 备份配置文件
    4. cp -r /etc/harbor /backup/
  2. 恢复数据
    1. # 恢复数据库
    2. docker exec -i harbor-db pg_restore -U postgres -d registry -c /backup/registry.dump

5.3 性能监控

  • Prometheus集成:Harbor内置Prometheus端点(/metrics),可接入Grafana监控。
  • 资源限制:通过docker-compose.yml调整容器资源限制(CPU/内存)。

六、安全最佳实践

  1. 定期更新:关注Harbor和Docker安全公告,及时升级版本。
  2. 网络隔离:限制Harbor访问IP范围,使用防火墙规则。
  3. 镜像扫描:启用Harbor的Clair镜像扫描功能,检测漏洞。
  4. 审计日志:记录所有用户操作,便于追溯。

七、总结与扩展

本文详细介绍了Docker+Harbor私有仓库的搭建流程,从环境准备到镜像推送全覆盖。通过Harbor,企业可实现镜像的集中管理、权限控制和安全审计,提升DevOps效率。下一步建议

  • 结合CI/CD工具(如Jenkins)实现自动化镜像构建与推送。
  • 探索Harbor的API接口,开发定制化运维工具。
  • 在多节点环境下部署Harbor高可用集群。

通过实践,读者可快速掌握企业级私有仓库的搭建与运维技能,为容器化应用部署奠定坚实基础。