资讯动态

Rancher V2.4.5 离线部署实战:Docker 镜像包准备、导入与避坑指南

发布时间:2026/10/13 4:54:44 来源:尧图企业网站定制
简介这份资源是面向Kubernetes与Rancher运维人员、容器化部署学习者的离线镜像包针对内网或网络受限环境下无法直接拉取Rancher V2.4.5相关镜像的痛点提供一次性导入的解决方案。压缩包共7个文件以5个tar镜像归档为主另含1个yaml编排文件与1个md说明文档整体约178.1MB体积适中便于传输与本地留存。镜像覆盖rancher-agent v2.4.5、prom-node-exporter v0.18.1、mirrored-flannelcni-flannel v0.16.1及其CNI插件v1.0.0、kube-proxy v1.17.0等组件基本满足Rancher集群节点注册、监控采集与Flannel网络部署所需。使用时通过docker load直接导入tar包即可完成镜像落地配合yaml可快速搭建实验环境。目前已有289人学习下载适合需要离线部署、复现Rancher V2.4.5集群或排查网络与监控组件问题的技术人员参考。1. Rancher V2.4.5 离线部署为什么镜像包才是真正的门槛很多团队在客户内网或者生产隔离区里第一次装 Rancher V2.4.5卡住的地方往往不是 YAML 写错而是docker pull根本连不上外网。Rancher 这套东西本质上是跑在 k8s 上的一个管理平台它自己又依赖一大堆容器镜像rancher/rancher、rancher/hyperkube、rancher/rke-tools、calico、coredns、metrics-server 等等。只要有一个镜像拉不下来整个集群初始化就会停在the api server is not healthy after 4m0.00747357s这种让人抓狂的状态。所以标题里的「docker 镜像包」不是附属品它是离线场景下能不能落地的前提。这篇笔记面向的是需要在无外网环境里把 Rancher V2.4.5 跑起来的一线运维和平台工程师我会把镜像包怎么准备、怎么导入、怎么验证、坑在哪按我自己踩过的顺序讲清楚。2. 先把镜像清单摸清楚Rancher V2.4.5 到底要哪些包2.1 为什么不能只导 rancher/rancher 一个镜像Rancher V2.4.5 的部署模式分两种单节点 Docker 跑法和 HA 模式跑在已有 k8s 上。无论哪种Rancher 自己启动后都会去拉一批系统组件镜像。单节点模式下Rancher 容器内部会调用 RKE 去创建下游集群这时候需要 hyperkube、rke-tools、etcd、calico 这些。如果你只把 rancher/rancher 导进去启动后创建集群时照样卡在镜像拉取。常见做法是先用一台能联网的机器把 Rancher 跑起来然后从它的容器日志或者docker images里把实际用到的镜像列表抓出来。我一般会直接看 Rancher 官方提供的rancher-images.txtV2.4.5 对应的清单大概有几十个镜像涵盖 k8s 核心组件、网络插件、监控和日志组件。2.2 用脚本生成精确的镜像清单不要手动一个个列容易漏。Rancher 官方在 GitHub 上每个版本都有对应的rancher-images.txt但离线环境拿不到。我通常的做法是在联网机器上先跑一个临时 Rancher然后执行下面这个脚本把镜像清单导出来#!/bin/bash # 从运行中的 Rancher 容器里提取所有相关镜像 # 适用于 Rancher V2.4.5 单节点部署后的环境 RANCHER_CONTAINER$(docker ps --filter namerancher --format {{.Names}} | head -n 1) if [ -z $RANCHER_CONTAINER ]; then echo 未找到运行中的 Rancher 容器请先启动 Rancher exit 1 fi # 导出 Rancher 自身镜像 docker inspect --format{{.Config.Image}} $RANCHER_CONTAINER rancher-images.txt # 导出 Rancher 数据卷里记录的系统镜像清单 docker exec $RANCHER_CONTAINER cat /var/lib/rancher/state/images.txt 2/dev/null rancher-images.txt # 去重并排序 sort -u rancher-images.txt -o rancher-images.txt echo 共生成 $(wc -l rancher-images.txt) 个镜像条目这段脚本的逻辑是先拿到 Rancher 容器本身用的镜像名再从容器内部的状态目录里读取它记录的系统镜像列表。/var/lib/rancher/state/images.txt这个路径在 V2.4.x 里是 Rancher 用来记录下游集群所需镜像的地方不同小版本可能略有差异如果读不到就换成docker exec进容器用find / -name *.txt | grep -i image找一下。参数上唯一要注意的是容器名过滤默认 Rancher 容器名就是rancher如果你改过名字把--filter里的值换掉。2.3 镜像包格式选择tar 还是 tar.gz导出的镜像用docker save存成 tar 包这是最通用的。但几十个镜像如果每个都单独 save文件数量多传输和导入都麻烦。我一般会合并成一个大的 tar 包或者按组件分组打几个包。合并的命令# 把所有镜像合并保存为一个 tar 包 # 注意镜像多的时候文件会很大确保磁盘空间充足 docker save -o rancher-v2.4.5-all.tar \ rancher/rancher:v2.4.5 \ rancher/hyperkube:v1.17.4-rancher1 \ rancher/rke-tools:v0.1.57 \ rancher/calico-node:v3.13.3 \ # ... 其余镜像按 rancher-images.txt 里的清单补全这里有个细节docker save后面跟的镜像必须是你本地已经 pull 下来的标签要写全。如果清单里有几十个建议写个循环从rancher-images.txt里读# 从清单文件批量 save while read -r image; do docker pull $image done rancher-images.txt docker save $(cat rancher-images.txt | tr \n ) -o rancher-v2.4.5-all.tartr \n 是把换行换成空格让docker save能一次接收多个镜像名。这个命令在镜像数量多的时候可能会超出命令行长度限制如果报argument list too long就分批 save 再合并或者直接用docker save配合xargs。3. 离线导入与 Rancher 启动把镜像包变成能跑的实例3.1 导入镜像包并校验完整性把 tar 包拷到目标机器后第一步是docker load# 导入镜像包 docker load -i rancher-v2.4.5-all.tar # 校验导入结果对比 rancher-images.txt 里的条目 docker images --format {{.Repository}}:{{.Tag}} | sort loaded-images.txt sort rancher-images.txt -o rancher-images.txt diff rancher-images.txt loaded-images.txtdiff没有输出就说明所有镜像都导入成功了。如果有缺失通常是 tar 包传输过程中损坏或者 save 的时候漏了。我遇到过 tar 包在跨平台拷贝时因为文件系统不支持大文件导致截断的情况所以导入后一定要做这个校验别等到 Rancher 启动报错才回头查。3.2 启动 Rancher V2.4.5 单节点容器镜像齐了之后启动命令本身不复杂但参数要写对# 启动 Rancher V2.4.5 单节点 # 数据卷挂载到宿主机方便后续备份和迁移 docker run -d \ --restartunless-stopped \ -p 80:80 -p 443:443 \ -v /opt/rancher:/var/lib/rancher \ --name rancher \ rancher/rancher:v2.4.5--restartunless-stopped保证宿主机重启后 Rancher 自动起来。-v /opt/rancher:/var/lib/rancher是关键Rancher 的所有状态数据、集群配置、证书都在这个目录里不挂载的话容器一删数据就没了。端口 80 和 443 是 Rancher UI 和 API 的默认入口如果宿主机上已经有 nginx 占了就改成别的端口再在前面做转发。启动后看日志确认docker logs -f rancher正常的话会看到Starting Rancher然后一系列初始化最后输出Rancher startup complete。如果卡在Waiting for server to become available大概率是镜像不完整或者证书生成有问题。3.3 验证 Rancher 是否真正可用浏览器访问https://宿主机IP第一次会提示证书不受信任这是自签证书的正常现象。进去后设置管理员密码然后进入集群管理页面。这时候不要急着创建集群先点开System项目看看系统组件是否都 Running。如果cattle-system命名空间下的 pod 有 ImagePullBackOff说明还有镜像没导进去回到 3.1 步重新校验。我一般还会跑一个快速检查# 检查 Rancher 容器内关键进程 docker exec rancher ps aux | grep -E rancher|k3s|etcd # 检查 Rancher API 健康状态 curl -sk https://localhost/healthz/healthz返回ok说明 Rancher 核心服务正常。如果返回 503看容器日志里有没有failed to start相关的错误。4. 避坑与排查离线部署 Rancher 最常见的 5 个翻车点4.1 镜像标签不匹配导致 ImagePullBackOff现象Rancher 启动后cattle-system里的 pod 一直ImagePullBackOffdescribe 看到Failed to pull image。原因Rancher V2.4.5 内部引用的镜像标签和你导入的不一致。比如你导的是rancher/hyperkube:v1.17.4-rancher1但 Rancher 实际要的是rancher/hyperkube:v1.17.4-rancher1-1这种带后缀的版本。解决从 Rancher 容器日志里找到它实际请求的镜像全名然后去联网机器上 pull 对应标签重新 save。或者直接改 Rancher 的系统镜像配置在Settings里把system-default-registry指向你的私有仓库前提是你有内部 registry。4.2 磁盘空间不足导致 docker load 失败现象docker load执行到一半报no space left on device。原因Rancher 全套镜像解压后可能占用 10GB 以上加上 Docker 自身的存储如果/var/lib/docker所在分区小于 30GB 很容易爆。解决提前用df -h /var/lib/docker确认空间不够就挂新盘或者把 Docker 的># 启动一个简单的内网 registry docker run -d -p 5000:5000 --restartunless-stopped --name registry registry:2 # 把镜像重新打标签并 push docker tag rancher/rancher:v2.4.5 registry.internal:5000/rancher/rancher:v2.4.5 docker push registry.internal:5000/rancher/rancher:v2.4.5push 完之后在 Rancher 的Settings里把system-default-registry改成registry.internal:5000后续创建集群时就会自动从这个地址拉镜像。5.2 镜像包版本管理表我习惯给每个 Rancher 版本维护一张镜像清单表记录镜像名、标签、大小和用途。这样下次升级或者回滚的时候不用重新猜。下面是一个示例结构镜像名标签大小用途rancher/rancherv2.4.51.2GBRancher 主服务rancher/hyperkubev1.17.4-rancher1800MBk8s 核心组件rancher/rke-toolsv0.1.57300MBRKE 集群操作工具rancher/calico-nodev3.13.3250MB网络插件rancher/coredns-coredns1.6.550MBDNS 服务这张表不用手动填用docker images --format配合awk就能生成。关键是每次更新 Rancher 版本时重新生成一份和 tar 包放在一起归档。5.3 验证镜像包完整性的一个习惯我吃过一次亏tar 包在拷贝过程中因为 U 盘质量问题损坏到了客户现场docker load报unexpected EOF又没有备份只能连夜重新下载。从那以后我养成了一个习惯save 完之后立刻算一个 sha256和 tar 包一起存。# 生成校验和 sha256sum rancher-v2.4.5-all.tar rancher-v2.4.5-all.tar.sha256 # 目标机器上校验 sha256sum -c rancher-v2.4.5-all.tar.sha256校验通过再 load不通过就重新传。这个动作多花两分钟但能省掉现场翻车的几个小时。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑