当前位置: 首页 > news >正文

企业级Docker镜像仓库Harbor部署实战

企业级Docker镜像仓库Harbor部署实战

    • 前言
    • 1. Harbor是什么?
    • 2. 环境准备
      • 2.1 服务器规划
      • 2.2 服务端基础配置
    • 3. 服务端部署Harbor
      • 3.1 安装Docker
      • 3.2 下载并解压Harbor离线安装包
      • 3.3 修改Harbor配置文件
      • 3.4 安装docker-compose
      • 3.5 执行安装
      • 3.6 配置Hosts(可选)
    • 4. 客户端配置与镜像推送
      • 4.1 客户端安装Docker
      • 4.2 配置Docker非安全仓库
      • 4.3 登录Harbor
      • 4.4 推送镜像测试
      • 4.5 Web界面验证
    • 5. 踩坑与经验分享
    • 6. 总结

前言

在容器化浪潮中,Docker镜像的管理成为企业落地Kubernetes、DevOps的基石。虽然Docker官方提供了Registry镜像,但缺乏权限控制、镜像同步、安全扫描等企业级特性。而Harbor的出现完美解决了这些问题——它不仅是一个私有镜像仓库,更是一个完整的镜像治理平台。本文基于Harbor v2.3.1,手把手带你完成从部署到使用的完整流程,并分享一些踩坑经验。

1. Harbor是什么?

Harbor是由VMware开源、现为CNCF孵化项目的企业级镜像仓库。它在原生的Docker Registry基础上增加了:

  • 图形化管理界面:通过Web UI轻松管理项目和镜像
  • 基于角色的访问控制:支持LDAP/AD集成
  • 镜像复制与同步:跨数据中心镜像分发
  • 漏洞扫描:与Clair/Trivy集成,确保镜像安全
  • Helm Chart管理:支持Kubernetes应用包存储

下图展示了Harbor的核心组件架构:

+--------------------+ | Harbor Web UI | <-- 浏览器操作 +--------------------+ | API Server | <-- REST API,供CLI/UI调用 +--------------------+ | Core Services | <-- 处理用户、项目、权限、镜像元数据 +--------------------+ | Registry | <-- Docker Registry 核心存储镜像 +--------------------+ | Database | <-- PostgreSQL,存储用户、项目、权限信息 +--------------------+ | Job Service | <-- 后台任务,如复制、清理、扫描 +--------------------+

2. 环境准备

2.1 服务器规划

主机名角色IP地址操作系统
hadoop108Harbor服务端192.168.2.108CentOS 7.9
hadoop109Docker客户端192.168.2.109CentOS 7.9

注意:Harbor对硬件有一定要求,建议至少2核4GB内存,磁盘空间根据镜像数量规划。

2.2 服务端基础配置

hadoop108上执行:

# 关闭防火墙(或开放所需端口)systemctl stop firewalld systemctl disable firewalld# 关闭SELinuxsetenforce0sed-i's/^SELINUX=enforcing$/SELINUX=disabled/'/etc/selinux/config# 安装必要工具yuminstall-y yum-utils device-mapper-persistent-data lvm2

3. 服务端部署Harbor

3.1 安装Docker

Harbor依赖Docker环境,这里使用离线包安装Docker 20.10.5:

# 上传离线包 docker-20.10.5-install.tar.gz 到 /opt/softwaretar-xzvf docker-20.10.5-install.tar.gzcddocker-20.10.5-install/shinstall.sh systemctl startdockersystemctlenabledocker

3.2 下载并解压Harbor离线安装包

从官网或内网源获取harbor-offline-installer-v2.3.1.tgz,上传至/opt/software

tar-xvf harbor-offline-installer-v2.3.1.tgz -C /opt/module/cd/opt/module/harbor

3.3 修改Harbor配置文件

复制模板并编辑:

cpharbor.yml.tmpl harbor.ymlvimharbor.yml

关键修改项:

hostname:192.168.2.108# 改为本机IP或域名,不要用localhostport:80# HTTP端口,若用HTTPS需配置证书# 管理员密码(默认Harbor12345,建议修改)harbor_admin_password:YourStrongPassword# 数据卷目录(可根据需求调整)data_volume:/data/harbor# 日志配置log:level:inforotate_count:50rotate_size:200Mlocation:/var/log/harbor

注意:如果宿主机80端口已被占用,可改为其他端口,但客户端登录时需指定端口。

3.4 安装docker-compose

Harbor依赖docker-compose来编排多容器:

yuminstall-ydocker-compose

3.5 执行安装

./install.sh

安装过程会拉取镜像并启动所有服务,看到如下输出表示成功:

✔ ----Harbor has been installed and started successfully.----

验证容器状态:

docker-composeps

所有服务都应为Up状态。

3.6 配置Hosts(可选)

若希望使用域名访问Harbor,可在客户端机器/etc/hosts中添加:

192.168.2.108 hadoop108

4. 客户端配置与镜像推送

4.1 客户端安装Docker

hadoop109上执行与服务端相同的Docker安装步骤。

4.2 配置Docker非安全仓库

由于Harbor使用HTTP协议(未配置HTTPS),Docker默认禁止推送镜像到非安全仓库。需要在客户端/etc/docker/daemon.json中添加:

{"insecure-registries":["192.168.2.108:80"],"registry-mirrors":["https://你的加速器地址"],"data-root":"/data/docker","exec-opts":["native.cgroupdriver=systemd"]}

重启Docker:

systemctl restartdocker

4.3 登录Harbor

dockerlogin -u admin -p YourStrongPassword192.168.2.108:80

登录成功后,认证信息会保存在~/.docker/config.json中。

4.4 推送镜像测试

给本地镜像打上Harbor仓库的标签:

# 假设本地已有registry:latest镜像dockertag registry:latest192.168.2.108:80/library/registry:latest

推送:

dockerpush192.168.2.108:80/library/registry:latest

输出类似:

The push refers to repository [192.168.2.108:80/library/registry] ... latest: digest: sha256:0f7e785a49386d7e98c502151f9b01dc5578aa4f13078a346b2c5cf50433f663 size: 1363

4.5 Web界面验证

浏览器访问http://192.168.2.108,使用admin账号登录,在library项目中即可看到刚推送的镜像。



5. 踩坑与经验分享

  1. 端口冲突:如果服务器已运行Nginx或其他Web服务,建议修改Harbor端口为8080等,并在docker login时指定端口。
  2. 时间同步:Harbor内部组件依赖时间同步,务必在服务端和客户端配置ntp:
    yuminstall-y ntpdate ntpdate ntp.aliyun.com
  3. 磁盘空间:Harbor默认数据目录在/data,建议挂载大容量磁盘,并定期清理无用镜像。
  4. 高可用部署:生产环境建议使用外部数据库和Redis,并通过对象存储(如S3)存储镜像,避免单点故障。
  5. 镜像复制:Harbor支持跨实例复制,可以配置两地三中心架构,确保镜像高可用。

6. 总结

通过本文,你已经掌握了Harbor的完整部署流程,并成功推送了第一个镜像。Harbor作为企业级镜像仓库,不仅提供了基本的存储功能,还涵盖了安全、复制、权限管理等关键能力,是容器化落地的重要一环。下一步,可以尝试配置LDAP认证、启用镜像扫描、设置垃圾回收策略,让Harbor真正成为团队的核心基础设施。

如果你在部署中遇到问题,欢迎留言交流,我们一起探讨解决方案。

http://www.jsqmd.com/news/397128/

相关文章:

  • 惊叹!提示工程架构师让区块链与提示系统结合焕发新活力
  • 探索光伏发电混合储能系统模型:从理论到仿真
  • 题解:洛谷 P1040 [NOIP 2003 提高组] 加分二叉树
  • LangGraph 实战:10分钟打造带“人工审批”的智能体流水线 (Python + LangChain)
  • 惊艳全场!大数据数据采集的实战妙招
  • 题解:洛谷 P1896 [SCOI2005] 互不侵犯
  • 直通上海智推时代:官方联络通道一站式汇总 - 速递信息
  • AI写作后如何添加个人观点让论文更真实?降AI的终极心法
  • 题解:洛谷 P2014 [CTSC1997] 选课
  • 武汉疆灵科技:深耕低空经济 打造无人机,具身智能人形机器人载人无人驾驶航空器维修与维修人才技能培训全国标杆 - 速递信息
  • 精准对接上海智推时代:官方沟通入口全收 - 速递信息
  • 题解:洛谷 P1063 [NOIP 2006 提高组] 能量项链
  • 动态中位数
  • 题解:洛谷 P2015 二叉苹果树
  • Solution - P4241 采摘毒瘤
  • 题解:洛谷 P1352 没有上司的舞会
  • 使用iOS安全API进行数据加密、解密、签名与验证完整指南
  • 题解:洛谷 P1070 [NOIP 2009 普及组] 道路游戏
  • 如何修复 Chrome Devtools Console 中无法粘贴代码的问题 All In One
  • Trae和Trae团队和Trae技术
  • 题解:洛谷 P1880 [NOI1995] 石子合并
  • COMSOL 隧道断层突水案例探究:不同开挖步数下的围岩奥秘
  • 题解:洛谷 P1435 [IOI 2000] 回文字串
  • Java 时间类(中):JDK8 全新时间 API 详细教程
  • 降AI率常见误区TOP10:别再走弯路了!2026年最全避坑指南
  • <P5464 缩小社交圈>
  • 支持实时预览与高质量导出的专业封面设计工具,完全免费:西瓜封面设计
  • 文科论文降AI比理工科更难?文科生专属降AI方案全解析
  • 题解:洛谷 P1541 [NOIP 2010 提高组] 乌龟棋
  • PEM 电解槽直流道两相流模拟:从建模到求解