尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ARM服务器离线部署Harbor 2.13.1:从拆包到避坑全指南
简介本资源为面向 ARM 架构服务器环境的 Harbor 2.13.1 离线安装包适合在国产化平台、ARM 服务器或内网隔离场景下部署私有镜像仓库的运维与开发人员使用。压缩包共 6 个文件以 sh 安装脚本、gz 镜像归档、prepare 预检脚本、tmpl 配置模板及 license 许可文件为主整体约 513.28MB覆盖从环境准备、参数配置到服务安装的完整离线部署链路无需联网即可完成组件拉取与初始化。目前已有 414 人学习下载说明该版本在 ARM 场景下具备一定参考价值。借助包内脚本与模板读者可快速搭建符合自身环境的 Harbor 私有仓库理解离线安装的目录组织与配置项含义并在此基础上完成镜像存储、用户权限与项目管理的初步实践为后续运维排错与版本升级提供可复用的基础。1. ARM 服务器上装 Harbor 2.13.1为什么离线包比在线脚本更靠谱在国产化替代和信创项目里ARM 架构服务器已经不是什么新鲜事鲲鹏、飞腾、麒麟 V10 这些组合我这两年碰得越来越多。但每次要在这种环境里部署镜像仓库最头疼的不是配置而是网络——很多生产环境压根不通外网连 Docker Hub 都拉不动更别说 Harbor 安装脚本里那一长串在线拉取的镜像了。harbor-offline-installer-v2.13.1-arm64.tgz这个包就是冲着这个场景来的它把 Harbor 运行所需的全部容器镜像、编排文件和安装脚本提前打包好解压即用不需要在目标机器上访问任何外部仓库。这个包适合谁一是手里有 ARM64 服务器但网络受限的运维工程师二是需要在麒麟、统信 UOS 这类国产系统上快速搭私有镜像仓库的交付人员三是做 POC 验证时不想被网络问题打断节奏的开发者。它解决的核心问题就一个让 Harbor 在 ARM 环境下的部署从「看运气」变成「可复现」。接下来我会把这个包拆开从环境准备到参数调优再到踩坑记录一步步走完。2. 拆包与前置检查ARM64 环境到底要满足什么条件2.1 解压后目录里有什么先看清楚再动手拿到harbor-offline-installer-v2.13.1-arm64.tgz之后别急着install.sh。我一般习惯先解压到/opt下面然后tree一下看看结构tar -zxvf harbor-offline-installer-v2.13.1-arm64.tgz -C /opt/ cd /opt/harbor ls -lh你会看到几个关键文件harbor.v2.13.1.tar.gz是镜像包里面塞了 Harbor 全部组件的 ARM64 镜像harbor.yml.tmpl是配置模板prepare和install.sh是安装入口common.sh是公共函数库。镜像包的大小通常在 1GB 上下具体取决于版本但 ARM64 的包和 x64 的包不能混用——这是第一个要记住的边界。注意如果你从 x64 环境拷贝了harbor.v2.13.1.tar.gz到 ARM 机器上docker load会直接报架构不匹配别在这上面浪费时间。2.2 系统层面的硬性条件内核、Docker、docker-composeHarbor 2.13.1 对 Docker 和 docker-compose 有明确要求。在 ARM64 的麒麟 V10 上我遇到过系统自带 Docker 版本过低导致docker compose子命令不可用的情况。常见做法是手动装 Docker CE 20.10 以上版本并且确保docker compose version能输出 v2 开头的版本号。# 检查内核和架构 uname -m # 必须输出 aarch64 或 arm64 uname -r # 建议 4.19 以上 # 检查 Docker docker version --format {{.Server.Version}} # 期望输出 20.10.x 或更高 # 检查 compose docker compose version # 期望输出 Docker Compose version v2.x.x如果docker compose不可用可以装docker-compose-plugin或者退而求其次用独立的docker-compose二进制但 Harbor 2.13.1 的install.sh默认走的是docker compose插件路径。参数上--with-trivy这类可选组件在离线包里是否包含取决于打包时是否把 Trivy 的 ARM64 镜像也塞进去了我拿到的这个包是包含的但如果你不需要漏洞扫描可以在harbor.yml里把 trivy 段注释掉能省不少资源。2.3 磁盘和内存别让 /var/lib/docker 爆掉Harbor 的镜像层、数据库、Redis 缓存都落在 Docker 的数据目录下。ARM 服务器如果/var/lib/docker挂载的分区太小跑一段时间就会因为镜像推送把磁盘写满。我一般会提前把 Docker 的># 查看 Docker 数据目录位置 docker info | grep Docker Root Dir # 如果需要在 harbor.yml 里指定数据卷路径 # 修改 data_volume 参数默认是 /data内存方面Harbor 核心组件加起来大概吃 2GB 左右加上 Trivy 会再多 1GB。如果服务器只有 4GB 内存建议把 Trivy 和 Notary 都关掉只保留 core、jobservice、registry、portal、redis、postgresql 这几个必需组件。3. 配置 harbor.yml 与执行安装参数怎么改才不翻车3.1 从模板生成配置文件逐项确认关键参数harbor.yml.tmpl不能直接改得先复制成harbor.ymlcd /opt/harbor cp harbor.yml.tmpl harbor.yml vim harbor.yml里面有几个参数必须改。hostname填服务器的 IP 或域名别写localhost否则客户端推送镜像时会解析失败。harbor_admin_password设一个强密码默认的Harbor12345在生产环境里等于没设密码。data_volume指向大容量分区。http.port默认 80如果被占用就改但改了之后记得客户端docker login也要带端口。# 关键参数示例 hostname: 192.168.1.100 http: port: 80 harbor_admin_password: YourStrongPass!2024 data_volume: /data trivy: ignore_unfixed: false skip_update: true # 离线环境必须设为 true否则会尝试联网更新漏洞库skip_update: true这个参数在离线场景下特别关键。Trivy 默认会去拉取漏洞数据库离线环境里会卡住直到超时安装过程看起来像卡死其实是网络请求在等。设成 true 之后它就用本地已有的库虽然数据可能不是最新但至少能跑起来。3.2 执行 prepare 和 install观察每一步输出配置改完之后先跑prepare./prepare这个脚本会做几件事检查harbor.yml语法、生成docker-compose.yml、把镜像包docker load进本地。如果harbor.v2.13.1.tar.gz损坏或者架构不对这一步就会报错。prepare成功后再跑install.sh./install.shinstall.sh会调用docker compose up -d启动所有容器。启动完成后用docker compose ps看容器状态正常应该是 9 个左右容器全部running或healthy。如果某个容器反复重启先看它的日志docker compose logs -f core docker compose logs -f registrycore起不来最常见的原因是数据库连接失败或者端口冲突registry起不来多半是存储路径权限问题。ARM 环境下还有一个隐蔽的坑某些基础镜像的 entrypoint 脚本里写了uname -m判断如果判断逻辑没覆盖aarch64容器会直接退出。这种情况只能换镜像或者手动改 entrypoint但 Harbor 官方 ARM64 包一般已经处理过了。3.3 验证安装结果从 Web 到 docker push 全链路走一遍安装完成后浏览器访问http://192.168.1.100用admin和你设的密码登录。能进首页说明 portal 和 core 正常。然后建一个测试项目比如library在客户端上执行docker login 192.168.1.100 docker tag nginx:latest 192.168.1.100/library/nginx:test docker push 192.168.1.100/library/nginx:test推送成功说明 registry、jobservice、postgresql 这条链路都通了。如果docker login报x509错误说明你用了 HTTPS 但证书没配好离线环境里要么配自签证书要么在 Docker 的daemon.json里加insecure-registries。我一般在内网环境直接走 HTTP省去证书管理的麻烦但生产环境还是建议上 TLS。4. 避坑与排查ARM 离线部署 Harbor 的五个血泪教训4.1 现象install.sh 卡在 “loading harbor images” 不动原因harbor.v2.13.1.tar.gz解压后的镜像层数多docker load在 ARM 服务器上如果磁盘 I/O 慢会看起来像卡死。另一个可能是镜像包在传输过程中损坏gzip 校验失败但脚本没报错。解决先手动docker load -i harbor.v2.13.1.tar.gz观察输出。如果报invalid tar header或unexpected EOF重新下载或重新拷贝镜像包。如果只是慢耐心等或者把镜像包解压后分批 load。4.2 现象core 容器启动后立刻退出日志显示 “database connection refused”原因postgresql 容器还没完全初始化core 就急着连。ARM 环境下 postgresql 的初始化脚本执行速度可能比 x64 慢导致竞态。解决docker compose restart core或者等 postgresql 日志出现database system is ready to accept connections之后再重启 core。根本办法是在docker-compose.yml里给 core 加depends_on的healthcheck条件但离线包里的 compose 文件是生成的改起来麻烦重启是最快的。4.3 现象推送大镜像时 jobservice 报 “no space left on device”原因/var/lib/docker或者data_volume指向的分区满了。ARM 服务器常见的配置是系统盘只有 40GBHarbor 跑几天就被镜像撑爆。解决docker system prune -a清理无用镜像但更彻底的是把data_volume和 Docker 的># 备份数据库 docker exec -it harbor-db pg_dump -U postgres registry /backup/registry_$(date %Y%m%d).sql # 备份 data_volume tar -zcvf /backup/harbor_data_$(date %Y%m%d).tar.gz /data迁移到新服务器时把这两个备份拷过去新 Harbor 装好后先恢复数据库再把data_volume解压到对应路径。注意 ARM 和 x64 之间的数据迁移是可行的因为数据卷里存的是镜像层和数据库文件跟 CPU 架构无关但新 Harbor 的镜像必须是目标架构的。还有一个技巧如果你有多台 ARM 服务器要装 Harbor可以把装好的/opt/harbor目录和 Docker 镜像一起打包直接拷到其他机器上docker load然后docker compose up -d省去重复prepare的时间。但harbor.yml里的hostname和密码得逐台改别偷懒。从那以后我每次在 ARM 环境部署 Harbor都会先手动docker load一遍镜像包确认没损坏再跑install.sh这个习惯帮我省了至少三次半夜爬起来排查的麻烦。希望帮到你。本文还有配套的精品资源点击获取
RELATED

相关推荐

C#步进电机S型加速曲线代码包:从梯形到七段式规划与定时器实现

C#步进电机S型加速曲线代码包:从梯形到七段式规划与定时器实现

简介:面向自动化设备、机器人及精密定位场景中的嵌入式与上位机开发者,提供基于C#的步进电机S型加速曲线实现,重点解决电机启停瞬间冲击大、速度过渡不平滑的问题。压缩包共44个文件、1.16MB,涵盖cs源码、exe可执行程序、pdb调试符…

📅 2026/10/13 12:04:06
VirtualJoy.rar解析:VR体感回放工具包的WebRTC串流与调参实战

VirtualJoy.rar解析:VR体感回放工具包的WebRTC串流与调参实战

简介:针对使用Delphi进行Android移动开发与游戏交互设计的工程师,VirtualJoy.rar提供了一整套基于FireMonkey的多点触控虚拟摇杆工程实现。压缩包共含10个文件,整体大小约8.38MB,涵盖Pascal源码、界面定义、工程配置、部署清单、资…

📅 2026/10/13 12:04:06
SpringBoot2+Vue3+MyBatis-Plus公交线路查询系统设计与实现全解析

SpringBoot2+Vue3+MyBatis-Plus公交线路查询系统设计与实现全解析

做Java方向的人大概率都接触过这类需求:城市公交线路查询,业务看着简单,Server要处理的东西却一点都不少。最近我把一套完整的公交线路查询系统源码重新整理了一遍,技术栈锁定在SpringBoot2 Vue3 MyBatis-Plus MySQL8.0&#x…

📅 2026/10/13 12:04:06
MORE NEWS

更多资讯

📰

场外期权动态对冲回测工具:从SABR建模到对冲延迟量化

1. 项目概述:这不是一个“跑个策略就出图”的玩具工具“基于PYTHON的场外期权动态对冲回测工具”——光看标题,很多人第一反应是:“哦,又一个用Backtrader或Zipline改的期权回测器”。但真正做过场外期权(OTC Option&a…

📰

SpringBoot图书管理系统实战:从架构设计到部署避坑指南

我一开始看到“Springboot星宇图书管理系统”这个标题的时候,第一反应就是——又是一个典型的Java课程设计项目。但真正把源码和文档看完整之后,我发现它的设计思路和代码结构其实很有代表性,很多处理方式直接可以改造成别的管理系统&#xf…

📰

AnyPS5实战指南:PS5桌面扩展、散热改造与M.2扩容全攻略

1. 项目拆解:AnyPS5到底在做一件什么事先说说我为什么会对这个项目感兴趣。PS5 从初版到现在的 Slim 版、Pro 版,主机性能越来越强,但玩家桌面上的问题却越来越一致:机器越放越热,配件越攒越乱,手柄充电总是…

📰

北京市SHP文件解析:结构、编码、坐标系与跨平台加载

简介:本资源为北京市行政区划矢量地理数据包,面向GIS初学者、城市规划从业者、地理信息专业学生及空间分析研究者,解决行政边界数据缺失、底图构建困难、区域统计可视化基础支撑不足等实际问题。压缩包共11个文件,含2个.shp&#…

📰

AI代码质量治理:从工程规范到风险驱动测试的落地实践

AI Coding 走到今天,早就不是"能不能生成代码"的问题,而是"生成的代码你敢不敢合进主干"的问题。我自己在团队里推 AI 辅助开发这半年多,最深的感受是:AI 写代码的速度越快,质量治理的手段就越不能…

📰

智能体技能机制:从提示词碎片到可复用技能库的实践

同学,如果你正在做Agent项目,迟早会碰到这么一种尴尬:功能越加越多,提示词越来越长,工具函数散落在各个文件里,想加一个新能力就像在改一座摇摇欲坠的积木塔。agent-skills这个词,直译过来是“智…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬