离线安装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 系且架构匹配再动手省得装到一半才发现包不对。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

糖尿病风险预测实战:随机森林建模与部署全流程解析

糖尿病风险预测实战:随机森林建模与部署全流程解析

简介:基于公开的皮马印第安人糖尿病数据集,该项目完整搭建了一个端到端的机器学习预测流程,面向数据科学初学者与健康数据分析爱好者,涵盖数据预处理、探索性分析、特征工程、模型训练与验证评估等环节,难度适中&#…

2026/10/14 0:00:02 阅读更多 →
InST模型Windows10可执行版本打包指南:PyInstaller与ONNX实战

InST模型Windows10可执行版本打包指南:PyInstaller与ONNX实战

简介:本资源为InST(Inversion-Based Style Transfer with Diffusion Models)的Windows 10可执行版本,面向从事风格迁移与扩散模型研究的深度学习开发者及学生,帮助在Windows环境下复现基于反演的风格迁移效果&#xff…

2026/10/14 0:00:09 阅读更多 →
轻量开源AI代理框架Hermes Agent:从安装到工具调用实战

轻量开源AI代理框架Hermes Agent:从安装到工具调用实战

如果你最近在折腾 AI Agent,大概率绕不开 LangChain、LlamaIndex 这些重量级框架的名字。今天聊的 Hermes Agent 走的是完全不同的路线:轻量、透明、自己说了算。它是一个开源、可自托管的 AI 代理框架,适合想要完全掌控数据流、不希望在某个…

2026/10/12 15:23:31 阅读更多 →

最新新闻

微信小程序奶茶店毕设从0到1全流程指南

微信小程序奶茶店毕设从0到1全流程指南

十个计算机毕设选题里,大概有五个是“基于微信的奶茶店小程序”。这个题目乍一看很重复,但它能常年被列入选题清单是有原因的:业务模型清晰,用户能一眼看懂价值;涉及点单、支付、购物车、后台管理、数据统计这些经典模…

2026/10/13 23:59:41 阅读更多 →
微生物群落结构差异分析:从统计显著到生物学可解释

微生物群落结构差异分析:从统计显著到生物学可解释

1. 这不是“画个热图就完事”的统计游戏很多人第一次接触“微生物群落结构差异分析”&#xff0c;脑子里浮现的是一张带颜色的热图、几个堆叠柱状图&#xff0c;外加一句“两组间存在显著差异&#xff08;p<0.05&#xff09;”。我见过太多项目——某高校实验室的土壤样本测…

2026/10/13 23:59:41 阅读更多 →
智慧用能研究院Java一面:高频考点与模拟面试实战拆解

智慧用能研究院Java一面:高频考点与模拟面试实战拆解

一个模拟出来的“研究院一面”&#xff0c;为什么值得认真拆&#xff1f;很多同学一听说“模拟面试”就觉得是走过场——找个学长学姐或者培训机构老师&#xff0c;照着简历问一圈&#xff0c;然后给个“不错”“基础还行”的评价&#xff0c;就结束了。但我可以负责任地讲&…

2026/10/13 23:59:41 阅读更多 →
AnyPS5:基于语义桥接的PS5游戏跨平台运行技术解析

AnyPS5:基于语义桥接的PS5游戏跨平台运行技术解析

1. 项目概述&#xff1a;一个被误读的命名现象&#xff0c;背后是跨平台兼容性设计的现实困境“AnyPS5”这个词最近在多个技术社区和硬件讨论区频繁出现&#xff0c;但几乎没人能说清它到底指什么。它既不是索尼官方发布的型号&#xff0c;也不是某款已上市设备的代号&#xff…

2026/10/13 23:59:41 阅读更多 →
Manjaro GNOME配置包冲突:manjaro-gnome-settings与-18.0互斥解析

Manjaro GNOME配置包冲突:manjaro-gnome-settings与-18.0互斥解析

1. 问题本质&#xff1a;这不是系统坏了&#xff0c;是包管理器在“认真履职”刚看到这个报错——manjaro-gnome-settings 与 manjaro-gnome-settings-18.0 有冲突——很多刚从Ubuntu或Windows转来的用户第一反应是“系统崩了”“是不是升级把GNOME搞挂了”。其实恰恰相反&…

2026/10/13 23:59:41 阅读更多 →
MyBatis插件机制深度剖析:从动态代理到SQL改写与加解密实战

MyBatis插件机制深度剖析:从动态代理到SQL改写与加解密实战

1. 插件机制的本质&#xff1a;不是魔法&#xff0c;是接口的排列组合我最早接触Mybatis插件的时候&#xff0c;把文档翻来覆去看了好几遍&#xff0c;脑子里一直是糊的。原因很简单&#xff1a;网上大部分教程上来就丢一个拦截器的代码&#xff0c;然后告诉你“这样就能自动分…

2026/10/13 23:58:40 阅读更多 →

日新闻

周新闻

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

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

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

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

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

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

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

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

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →