Ubuntu 22.04 amd64 离线安装 Docker 完整教程

最干净、从零开始、100%成功 的 Ubuntu 22.04 amd64 离线安装 Docker 完整教程

包含:联网电脑下载离线包 → 离线电脑完整安装 → 自动修复所有报错 ( containerd 命令不存在/服务未加载/exit status 2 全部一次性解决)


第一部分:【联网电脑】下载官方离线包(最简单)

只用浏览器下载,不用命令,下载 4 个核心 .deb 包(适配 Ubuntu 22.04 jammy amd64)

下载地址(直接复制到浏览器打开)

复制代码
https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/containerd.io_1.7.22-1_amd64.deb
https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce_27.3.1-1~ubuntu.22.04~jammy_amd64.deb
https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce-cli_27.3.1-1~ubuntu.22.04~jammy_amd64.deb
https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-compose-plugin_2.29.1-1~ubuntu.22.04~jammy_amd64.deb

操作

  1. 下载这 4 个 deb 文件
  2. 放到一个文件夹里,命名为 docker-offline
  3. 用 U盘/硬盘 把整个文件夹拷贝到 离线 Ubuntu 22.04 电脑 的桌面

第二部分:【离线 Ubuntu 22.04】从零安装(一步到底)

1. 进入离线包目录(桌面)

bash 复制代码
cd ~/Desktop/docker-offline

2. 强制安装所有包

bash 复制代码
sudo dpkg -i *.deb

3. 一键修复所有启动错误(解决 containerd 不存在)

bash 复制代码
# 创建必要目录
sudo mkdir -p /etc/containerd /var/lib/containerd /var/lib/docker

# 生成 containerd 配置(修复 exit status 2)
sudo containerd config default | sudo tee /etc/containerd/config.toml

# Ubuntu 22.04 网络兼容修复
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

# 加载内核模块
sudo modprobe overlay br_netfilter

# 修复权限
sudo chown -R root:root /var/lib/containerd /var/lib/docker

4. 启动服务并设置开机自启

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl enable --now containerd docker

5. 验证安装成功(最终测试)

bash 复制代码
# 查看服务状态(必须显示 active (running))
sudo systemctl status containerd docker --no-pager

# 查看 Docker 版本
docker --version

第三部分:(可选)免 sudo 使用 Docker

bash 复制代码
sudo usermod -aG docker $USER

退出终端重新登录 即可直接用 docker 命令


第四部分:(可选)修改iptables问题

1. 停止 Docker 和 containerd 服务

sudo systemctl stop docker containerd

2. 强制彻底切换到 iptables-legacy(核心修复)

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy

sudo update-alternatives --set ip6tables /usr/sbin/iptables-legacy

sudo update-alternatives --set arptables /usr/sbin/arptables-legacy

sudo update-alternatives --set ebtables /usr/sbin/ebtables-legacy

3. 加载缺失的 iptables 内核模块(解决链缺失)

sudo modprobe iptable_nat iptable_filter br_netfilter overlay

4. 删除损坏的 docker0 网桥,让 Docker 自动重建

sudo ip link del docker0 2>/dev/null

5. 清空错误的 iptables 规则

sudo iptables -t nat -F

sudo iptables -t filter -F

6. 重启服务生效

sudo systemctl daemon-reload

sudo systemctl enable --now containerd docker

✅ 成功标志

  1. containerd 和 docker 服务都是 绿色 running
  2. 无任何报错
  3. docker --version 正常显示版本

总结

  1. 用官方固定 4 个 deb 包,无依赖问题、100%可安装
  2. 自动修复:containerd 命令不存在/服务未加载/exit status 2
  3. 全程离线,纯复制命令,零配置、零失败
相关推荐
DYWorker0013 小时前
Linux驱动:RK3568 GMAC + YT8531C 千兆以太网全流程解剖
linux
lisanmengmeng5 小时前
NRPE 添加命令(一)
linux·运维·服务器
树下水月5 小时前
Typora破解
linux·服务器·前端
沫璃染墨6 小时前
《从零入门Linux系统篇(五十七):线程篇·十——生产者消费者模型进阶:从环形缓冲区到POSIX信号量》
linux·运维·服务器·开发语言·c++·系统架构·信号处理
wuminyu6 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
深念Y6 小时前
rime-雾凇拼音-配置记录
linux·junit·软件·拼音·kde
更深兼春远8 小时前
第2篇:Dify 部署保姆级教程:用 Docker跑起来
docker·容器·dify
殷色玫瑰8 小时前
C++ string类详解:常用接口、字符串操作与模拟实现
java·linux·c语言·开发语言·数据结构·c++
忆挽篱笙歌8 小时前
gcc,g++
linux
l1t9 小时前
修复WSL CreateInstance/E_UNEXPECTED和 mounted read-only 错误
linux·windows·wsl