尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
离线安装Docker:docker.rpm.tar包解析与实战指南
简介这份资源是面向 CentOS 系统运维与容器入门者的 Docker 离线安装包针对内网或无外网环境下无法直接通过 yum 源安装 Docker 的场景提供了一整套可本地部署的 RPM 依赖集合。压缩包共 16 个文件以 9 个 rpm 安装包为主涵盖 docker、docker-client、docker-common、container-selinux、skopeo-containers、oci-systemd-hook、oci-umount 等核心组件另含 3 个 gz、3 个 bz2 及 1 个 xml 文件用于构建本地 yum 仓库元数据整体约 19.27MB体积轻便便于拷贝传输。目前已有 381 人学习下载适合需要快速搭建 Docker 运行环境、规避在线源依赖问题的运维人员参考使用。通过该资源可一次性获取完整依赖链减少逐个查找 RPM 包的繁琐过程配合本地仓库配置即可完成离线安装为后续容器部署与镜像管理打下基础。1. 离线环境里的 Docker 安装包docker.rpm.tar 到底解决了什么问题如果你在内网、隔离网段或者客户现场做过交付大概率遇到过这种场景目标机器没有外网yum install docker-ce直接卡在源不可达而项目又必须把容器跑起来。这时候一个docker.rpm.tar软件包就是救命稻草——它把 Docker 运行所需的 RPM 包预先打包成 tar 归档拷进去解压、本地安装全程不碰网络。这个资源适合三类人一是做私有化交付的运维二是需要在无网服务器上搭容器环境的开发三是想搞清楚 Docker 在 RHEL/CentOS 系上到底依赖哪些包的学习者。它不解决 Windows 和 macOS 的 Docker Desktop 安装问题那是另一条路。核心价值就一句话把「联网装 Docker」变成「离线装 Docker」并且让你看清依赖链。2. 拆开 docker.rpm.tar包结构、依赖链与选型逻辑2.1 tar 包里通常装了什么拿到一个docker.rpm.tar第一件事不是急着解压安装而是先看清楚里面有什么。常见的打包方式是把 Docker CE 相关的 RPM 全部塞进一个 tar可能还带一个install.sh。典型内容如下文件/目录作用是否必需containerd.io-*.rpm容器运行时Docker 的底层依赖必需docker-ce-*.rpmDocker 引擎主包必需docker-ce-cli-*.rpm命令行客户端必需docker-ce-rootless-extras-*.rpmrootless 模式支持可选docker-compose-plugin-*.rpmcompose v2 插件可选docker-buildx-plugin-*.rpmbuildx 构建插件可选install.sh批量安装脚本视打包者而定先解压再列目录不要直接在当前目录铺开# 创建独立目录避免污染当前路径 mkdir -p /opt/docker-offline cd /opt/docker-offline # 解压 tar 包-x 解压 -v 显示过程 -f 指定文件 tar -xvf docker.rpm.tar # 查看解压出来的内容确认 RPM 列表 ls -lh *.rpm 2/dev/null || ls -lhtar -xvf三个参数的含义-x是 extract 解压-v是 verbose 输出解压过程方便确认-f指定归档文件名。如果你的包是.tar.gz或.tar.xz分别加-z或-J。解压后先ls确认 RPM 是否齐全尤其注意containerd.io在不在——很多人装完docker-ce发现服务起不来就是漏了这个底层运行时。2.2 为什么是 RPM 而不是 deb选型要看目标系统RPM 是 RHEL、CentOS、Rocky、AlmaLinux、Fedora、openSUSE 这一系的包格式deb 是 Debian、Ubuntu 一系的。你拿到docker.rpm.tar就意味着目标机器大概率是 RPM 系。如果目标机是 Ubuntu硬装 RPM 会翻车——rpm命令可能都没装或者装了也解不出依赖。判断目标系统用一条命令# 查看发行版信息确认是 rpm 系还是 deb 系 cat /etc/os-release # 或者直接看包管理器是否存在 which yum dnf rpm 2/dev/null which apt dpkg 2/dev/null如果输出里有yum/dnf/rpm说明是 RPM 系这个包能用。如果只有apt/dpkg那这个docker.rpm.tar不适合你需要找对应的 deb 包。这是选型的第一道门槛别跳过。另外要注意架构x86_64的包不能装在aarch64ARM机器上装之前用uname -m确认否则会报「软件包架构不匹配」。2.3 依赖顺序先 containerd 再 docker-ceRPM 安装有依赖顺序虽然yum localinstall能自动处理但纯rpm -ivh手动装时必须按依赖来。正确顺序是先containerd.io再docker-ce-cli然后docker-ce最后插件类。用yum或dnf本地安装能省心很多# 用 yum/dnf 本地安装自动解析 RPM 之间的依赖关系 # --nogpgcheck 跳过 GPG 校验离线包常无签名内网可信环境可用 sudo yum localinstall -y --nogpgcheck *.rpm # 如果是较新的系统用 dnf sudo dnf localinstall -y --nogpgcheck *.rpmlocalinstall的作用是告诉包管理器「这些包来自本地文件而不是仓库」它会读取每个 RPM 的依赖元数据并在本地集合里互相满足。--nogpgcheck跳过签名校验因为离线包往往没有导入 GPG key不加这个会报「Public key not installed」。内网可信环境下可以接受但如果对安全有要求应该先rpm --import导入官方 key 再装。装完验证# 确认 docker 二进制已就位 docker --version # 启动并设置开机自启 sudo systemctl enable --now docker # 查看服务状态active (running) 才算成功 sudo systemctl status dockersystemctl enable --now等于「设置开机自启 立即启动」两步合一。如果status显示failed先看journalctl -u docker --no-pager的报错八成是 containerd 没装好或者 SELinux 在拦。3. 离线安装全流程从解压到跑起第一个容器3.1 安装前的环境检查清单动手之前花两分钟做检查能省掉后面半小时的排错。要确认的点系统是 RPM 系、架构匹配、有 root 或 sudo 权限、磁盘空间够Docker 镜像默认存/var/lib/docker至少留几个 G、内核版本别太老uname -r3.10 以上基本没问题。还有一条容易被忽略如果机器上之前装过旧版 Docker 或者是 podman要先清理否则包冲突。# 检查是否已有旧版 docker 或冲突的容器运行时 sudo yum list installed | grep -Ei docker|podman|containerd # 如果有旧版先卸载注意这会删掉旧的数据确认后再执行 sudo yum remove -y docker docker-client docker-common podman 2/dev/null # 确认磁盘空间/var 至少留 5G df -h /vargrep -Ei里-E是扩展正则-i忽略大小写这样Docker、docker、PODMAN都能匹配到。卸载旧版时数据目录/var/lib/docker默认不会删但保险起见先确认里面没有你要保留的镜像和卷。3.2 解压与本地安装的完整命令序列把前面几步串成一条可复制的流程。假设docker.rpm.tar已经传到目标机的/tmp# 1. 建工作目录并解压 mkdir -p /opt/docker-offline cd /opt/docker-offline tar -xvf /tmp/docker.rpm.tar # 2. 确认 RPM 列表和架构 ls -lh *.rpm uname -m # 应为 x86_64 或 aarch64与包架构一致 # 3. 本地安装自动处理依赖 sudo yum localinstall -y --nogpgcheck *.rpm # 4. 启动服务并设自启 sudo systemctl enable --now docker # 5. 验证版本与服务状态 docker --version sudo systemctl is-active docker第 3 步的*.rpm通配会把目录下所有 RPM 一起交给 yum由它排序依赖。如果某个包报「conflicts」说明系统里有冲突版本回到 3.1 清理。第 5 步systemctl is-active返回active就是成功。到这一步 Docker 引擎就跑起来了但还不能用非 root 用户操作。3.3 配置镜像加速与验证容器运行离线装完 Docker引擎本身不需要网络但你要docker pull拉镜像时还是得能访问镜像仓库。内网环境通常有私有 registry或者配一个内网镜像源。配置方式# 创建或编辑 daemon 配置 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json /dev/null EOF { registry-mirrors: [https://your-internal-mirror.example.com], data-root: /var/lib/docker } EOF # 重载配置并重启 docker sudo systemctl daemon-reload sudo systemctl restart dockerdaemon.json是 Docker 引擎的配置文件registry-mirrors指定镜像拉取的镜像源地址># 跑一个最小容器验证引擎正常 sudo docker run --rm hello-world # 如果内网拉不到 hello-world用本地已有的镜像测试 sudo docker images sudo docker run --rm 本地镜像名 echo ok--rm表示容器退出后自动删除不留垃圾。看到Hello from Docker!就说明从安装到运行全通了。如果卡在拉取是镜像源问题不是安装问题分开排查。4. 避坑与排查离线装 Docker 最常见的五个翻车点4.1 报「软件包架构不匹配」现象yum localinstall时报package xxx is intended for a different architecture。原因下载的 RPM 是x86_64但目标机是aarch64ARM或者反过来。解决uname -m确认本机架构去获取对应架构的包。ARM 服务器现在很常见别默认都是 x86。4.2 服务起不来journalctl 显示 containerd 相关错误现象systemctl status docker是failed日志里出现failed to start containerd或containerd: command not found。原因只装了docker-ce没装containerd.io或者 containerd 装了但没启动。解决确认containerd.io在 RPM 列表里并已安装然后sudo systemctl enable --now containerd单独把它拉起来再重启 docker。4.3 非 root 用户执行 docker 报权限错误现象普通用户跑docker ps报permission denied while trying to connect to the Docker daemon socket。原因Docker 守护进程的 socket 默认只有 root 和 docker 组能访问。解决把用户加进 docker 组然后重新登录使组生效# 将当前用户加入 docker 组 sudo usermod -aG docker $USER # 重新登录或执行以下命令刷新组身份 newgrp docker # 验证 docker psusermod -aG的-a是 append不加会把用户从其他组里踢出去务必带上。加组后必须重新登录或newgrp才生效这是很多人加了组还报错的玄学根源。4.4 SELinux 或防火墙拦截导致容器网络不通现象容器起来了但访问不了外网或者宿主机访问容器端口失败。原因SELinux enforcing 模式拦截或 firewalld 没放行。解决先确认getenforce如果是Enforcing且确认是它拦的可临时setenforce 0测试生产环境要谨慎正确做法是配 SELinux 策略或加--privileged调试。防火墙用firewall-cmd --add-port端口/tcp --permanent firewall-cmd --reload放行。4.5 磁盘被镜像撑爆/var 分区满现象某天docker run报no space left on device。原因镜像、容器层、日志都堆在/var/lib/docker长期不清理。解决定期docker system prune或把>#!/usr/bin/env bash set -euo pipefail # 任一命令失败即退出未定义变量报错管道错误不吞 # 断言必须是 RPM 系且有 root 权限 command -v yum /dev/null || { echo 非 RPM 系系统退出; exit 1; } [[ $EUID -eq 0 ]] || { echo 请用 root 或 sudo 执行; exit 1; } WORKDIR/opt/docker-offline mkdir -p $WORKDIR cd $WORKDIR # 解压若尚未解压 [[ -n $(ls *.rpm 2/dev/null) ]] || tar -xvf /tmp/docker.rpm.tar # 安装 yum localinstall -y --nogpgcheck *.rpm # 启动并验证 systemctl enable --now docker systemctl is-active docker docker --version echo Docker 离线安装完成set -euo pipefail是脚本健壮性的关键-e遇错即停-u用未定义变量报错-o pipefail让管道中任一环失败都算失败。$EUID是当前用户 ID0 就是 root。command -v yum检查命令是否存在比which更可移植。这个脚本的边界是它假设 RPM 已经和脚本在同一目录且目标机架构匹配。如果要跨架构分发得在脚本里加uname -m判断并选择对应子目录的包。验证脚本是否真的可复用我会在一台干净的测试机上跑一遍重点看三个点断言是否拦住了错误环境、安装后docker run --rm hello-world是否通过、重启机器后 docker 是否自启。从那以后我每次交付离线 Docker 环境都强制先跑一遍这个脚本的断言部分确认目标机是 RPM 系且架构匹配再动手省得装到一半才发现包不对。希望帮到你。本文还有配套的精品资源点击获取
RELATED

相关推荐

emp表加薪逻辑怎么写?TaoToken 辅助调试按基本薪水10%加薪且超5000取消的SQL

emp表加薪逻辑怎么写?TaoToken 辅助调试按基本薪水10%加薪且超5000取消的SQL

/* 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 15:19:21
Claude Code + 火山引擎本地开发环境搭建全攻略:用 TaoToken 统一 Key 打通模型调用链路

Claude Code + 火山引擎本地开发环境搭建全攻略:用 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 15:19:21
洱海SHP底图处理:坐标系检查、岸线简化与掩膜提取实操指南

洱海SHP底图处理:坐标系检查、岸线简化与掩膜提取实操指南

简介:洱海SHP文件是面向GIS操作的基础底图数据,适用于地图制图、空间分析、环境研究与规划应用等场景,也可作为新手练习矢量数据导入与图层管理的素材。压缩包内共31个文件,以shp矢量数据、dbf属性表、prj投影信息、shx/sbn/sbx空…

📅 2026/10/12 15:19:21
MORE NEWS

更多资讯

📰

BQL队列控制:用类SQL规则语言治理消息积压与雪崩

做后端的人,迟早会跟消息队列的“失控”正面遭遇一次。我这次要拆解的BQL队列控制,是我们在某订单履约系统里从零搭起来的一套队列治理方案,核心思路是用一种类SQL的声明式规则语言,把“何时限流、何时扩并发、哪些任务优先、触发…

📰

HexView实战:ECU刷写文件转换、裁剪与CRC校验避坑指南

简介:HexView(Vector)V1.09.01是一款面向嵌入式开发、软件逆向与数据分析人员的十六进制查看编辑工具,解决二进制文件逐字节查看、数据格式转换、搜索替换等底层处理需求。压缩包共19个文件,大小仅1.93MB,包…

📰

Boop 配置完全指南:.env.local 里 15 个关键环境变量一次讲透

人工智能大模型AI AgentAI 应用Agent 记忆工具调用 【免费下载链接】boop-agent iMessage personal agent: choose Claude Agent SDK (Claude Code) or Codex app-server runtime (Codex/ChatGPT), with memory, sub-agents, automations, integrations. 项目地址: …

📰

从零手写MATLAB直方图均衡化:原理、实现与工程优化

1. 为什么我要自己写直方图均衡化函数很多人第一次接触图像增强,都是从MATLAB自带的histeq函数开始的。一行代码下去,灰度分布就均匀了,对比度就上来了,效果看起来还不错。但如果你一直停留在调用现成函数的层面,遇到稍…

📰

Python 解析 AI 代码自动补全的实现方式:从 401/local proxy failed 到 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腾讯云618活动说明及Hermes Agent/OpenClaw配置Token Plan新手快速入门

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

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

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

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

📞 💬