根本原因是依赖关系未理清、版本未对齐、安装顺序错误;须先确认Ubuntu代号/架构/内核/模块,再在联网机用--print-uris精准下载containerd.io、docker-ce-cli、docker-ce等严格匹配版本的包,离线机按containerd→cli→ce顺序dpkg安装,并用apt --fix-broken补系统依赖。
离线安装 docker engine 时依赖报错,根本原因不是“缺包”,而是依赖关系没理清、版本没对齐、安装顺序没走对。关键不是硬凑所有 deb/rpm,而是按逻辑链逐层补全。
先确认目标系统环境和基础依赖
离线安装前必须在目标机器上确认:Ubuntu 版本(如 jammy)、架构(x86_64 或 arm64)、内核版本(≥5.4 推荐)、以及是否已启用 overlay 和 br_netfilter 模块。运行以下命令快速检查:
- lsb_release -sc —— 看 Ubuntu 代号(用于匹配软件源)
- uname -r —— 看内核版本
- modprobe overlay && modprobe br_netfilter —— 若报错,需提前加载或写入 /etc/modules
- apt list --installed | grep -E 'ca-certificates|curl|gnupg|lsb-release' —— 这些是添加仓库和验证签名的基础工具,离线环境也得有
在联网机上精准拉取全部依赖包
不能只下 docker-ce.deb,必须连同它所有直接和间接依赖一起下载。推荐用 apt 的 --print-uris 模式生成完整清单:
- 在同版本 Ubuntu 联网机上执行:
apt update && apt install -y --print-uris docker-ce docker-ce-cli containerd.io | grep "http.*\.deb" | awk '{print $1}' | sed 's/\'$//g' > deps.list - 用 wget 或 aria2c 批量下载:
wget -i deps.list -P ./docker-offline - 特别注意:containerd.io 必须与 docker-ce 版本严格匹配(例如 docker-ce=5:24.0.7~ubuntu.22.04.1 需搭配 containerd.io=1.7.20~ubuntu.22.04.1)
离线机上按依赖顺序安装
dpkg 不会自动解决依赖顺序,必须手动控制安装次序。把下载好的所有 .deb 放进一个目录后,按如下顺序执行:
- 先装底层运行时:sudo dpkg -i containerd.io_*.deb
- 再装命令行工具:sudo dpkg -i docker-ce-cli_*.deb
- 最后装引擎主包:sudo dpkg -i docker-ce_*.deb
- 若提示 missing dependency,用 sudo apt --fix-broken install 补装缺失的系统级依赖(如 libseccomp2、iptables),这些通常已在系统基础镜像中,否则需一并离线下载
验证服务与后续配置
安装完成后别急着 run 容器,先确保服务能正常加载:
- sudo systemctl daemon-reload
- sudo systemctl enable --now docker
- sudo docker version —— 应同时显示 client 和 server 信息
- sudo docker info | grep -E "Storage|Cgroup" —— 确认存储驱动(overlay2)和 cgroup 版本可用
不复杂但容易忽略


















