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这个习惯帮我省了至少三次半夜爬起来排查的麻烦。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

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

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

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

2026/10/13 12:03:51 阅读更多 →
嵌入式Linux显示驱动调试工具链实战:从黑屏到花屏的定位方法

嵌入式Linux显示驱动调试工具链实战:从黑屏到花屏的定位方法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 12:02:50 阅读更多 →
工业晶振选型三关解析:宽温、抗振与长寿命的工程权衡

工业晶振选型三关解析:宽温、抗振与长寿命的工程权衡

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 12:02:50 阅读更多 →

最新新闻

鲲鹏云ARM架构Hadoop集群部署实验全流程拆解

鲲鹏云ARM架构Hadoop集群部署实验全流程拆解

简介:《鲲鹏云大数据实验docx》是一份面向云计算与大数据初学者的实验报告,完整记录了在华为云鲲鹏环境下从零搭建Hadoop集群的全过程。报告从购买弹性云服务器与对象存储服务开始,介绍如何获取AK/SK认证密钥,并逐步完成OpenJDK安…

2026/10/13 12:40:44 阅读更多 →
大数据实验第一课:Linux与Hadoop操作避坑指南

大数据实验第一课:Linux与Hadoop操作避坑指南

简介:本资源是大数据系列实验的第一份配套材料,面向刚接触大数据技术的高校学生与自学者,帮助其搭建后续实验所需的基础环境。内容围绕Linux虚拟机安装、常用Linux命令以及Hadoop伪分布式安装三大模块展开,覆盖cd、ls、mkdir、cp、…

2026/10/13 12:40:44 阅读更多 →
STM32双机CAN通信实战:TJA1050硬件设计到软件调试全解析

STM32双机CAN通信实战:TJA1050硬件设计到软件调试全解析

1. 为什么双机通信我选了CAN而不是UART——场景选择与总体方案先说一个最常见的场景:你在做一个小项目,A板和B板之间要互通数据,距离可能有个十来米,现场还有电机、变频器这类干扰源。多数人第一反应是UART,一对TX/RX接…

2026/10/13 12:40:44 阅读更多 →
数据库技术选型决策记录(ADR)实战:关系型、文档型与事件型数据库的完整评估与决策

数据库技术选型决策记录(ADR)实战:关系型、文档型与事件型数据库的完整评估与决策

【免费下载链接】architecture-decision-record Architecture decision record (ADR) examples for software planning, IT leadership, and template documentation 项目地址: https://gitcode.com/gh_mirrors/ar/architecture-decision-record 点击查看 免费下载 …

2026/10/13 12:40:44 阅读更多 →
8款硬核MCP服务器实战:让AI告别复制粘贴

8款硬核MCP服务器实战:让AI告别复制粘贴

我先从一个特别没面子但特别真实的场景说起。 上周我要做一份跨项目的数据汇总报告,具体流程是这样的:先从A系统的后台导出两个月的订单记录,再从B系统拉出成本表,打开电子表格软件把两边的格式统一,然后把关键数字一…

2026/10/13 12:40:44 阅读更多 →
Natron 中 G‘MIC Layers to Tiles 节点完全指南:多图层图像拆分为网格瓦片

Natron 中 G‘MIC Layers to Tiles 节点完全指南:多图层图像拆分为网格瓦片

音视频视频处理图形学桌面应用 【免费下载链接】Natron Open-source video compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry. 项目地址: https://gitcode.com/gh_mirrors/na/Natron 点击查看 …

2026/10/13 12:39:44 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →