Docker 彻底卸载指南:CentOS/Ubuntu 双系统 5 步清理残留文件
Docker 彻底卸载指南:CentOS/Ubuntu 双系统 5 步清理残留文件
当 Docker 环境出现版本冲突、安装失败或需要迁移时,常规的卸载命令往往无法彻底清理系统。残留的配置文件、依赖项和缓存文件可能导致新安装的 Docker 出现各种诡异问题。本文将提供一套完整的解决方案,覆盖 CentOS 和 Ubuntu 两大主流 Linux 发行版。
1. 准备工作与状态检查
在开始卸载前,我们需要先确认当前 Docker 的运行状态和安装方式。不同安装方法(如 apt/yum 安装、二进制包安装)对应的清理步骤有所差异。
检查 Docker 服务状态:
systemctl status docker如果服务仍在运行,需要先停止:
sudo systemctl stop docker sudo systemctl disable docker查看已安装的 Docker 组件:
- Ubuntu/Debian 系统:
dpkg -l | grep docker - CentOS/RHEL 系统:
rpm -qa | grep docker
提示:记录下这些输出结果,后续卸载时需要针对性地移除这些包。
2. 核心组件卸载
2.1 Ubuntu/Debian 系统卸载
对于基于 apt 的系统,执行以下命令移除主程序:
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io但这样还不够,我们还需要清理相关依赖:
sudo apt-get autoremove -y --purge docker-*2.2 CentOS/RHEL 系统卸载
对于 yum 包管理系统,移除主程序的命令为:
sudo yum remove -y docker-ce docker-ce-cli containerd.io老版本 Docker(称为 docker 或 docker-engine)需要额外处理:
sudo yum remove -y docker docker-common docker-selinux docker-engine3. 残留文件深度清理
无论哪种系统,卸载包后都会留下大量配置文件和数据。以下是需要手动删除的关键目录:
| 目录路径 | 内容类型 | 删除命令 |
|---|---|---|
| /var/lib/docker | 容器和镜像数据 | sudo rm -rf /var/lib/docker |
| /var/lib/containerd | containerd 数据 | sudo rm -rf /var/lib/containerd |
| /etc/docker | 配置文件 | sudo rm -rf /etc/docker |
| /var/run/docker.sock | 套接字文件 | sudo rm -f /var/run/docker.sock |
| ~/.docker | 用户配置 | rm -rf ~/.docker |
完整清理脚本(适用于两种系统):
#!/bin/bash echo "Starting Docker deep clean..." for dir in /var/lib/docker /var/lib/containerd /etc/docker; do [ -d "$dir" ] && sudo rm -rvf "$dir" done [ -S /var/run/docker.sock ] && sudo rm -v /var/run/docker.sock [ -d ~/.docker ] && rm -rvf ~/.docker echo "Cleanup completed."4. 依赖项与用户组清理
4.1 移除 Docker 用户组
如果之前创建过 docker 用户组,现在应该移除:
sudo groupdel docker4.2 清理网络配置
Docker 会创建自定义网络接口和 iptables 规则,需要清理:
查看 Docker 网络接口:
ip link show | grep docker清理 iptables 规则:
sudo iptables -F sudo iptables -X sudo systemctl restart iptables # 或 ufw/防火墙服务4.3 移除仓库配置
删除 Docker 的软件源配置:
- Ubuntu:
sudo rm /etc/apt/sources.list.d/docker* - CentOS:
sudo rm /etc/yum.repos.d/docker*
5. 验证与系统恢复
完成上述步骤后,建议执行以下检查:
验证卸载结果:
which docker || echo "Docker binary not found" docker --version || echo "Docker not installed"系统状态检查:
- 检查关键目录是否已清空:
ls -ld /var/lib/docker /etc/docker - 检查进程是否完全退出:
ps aux | grep -E 'docker|containerd'
可选:系统还原
如果需要完全恢复系统到安装前的状态,可以考虑:
# Ubuntu sudo apt-get update && sudo apt-get upgrade -y # CentOS sudo yum update -y常见问题解决方案
在实际操作中可能会遇到以下问题:
文件被占用无法删除:
sudo lsof /var/lib/docker # 查看占用进程 sudo kill -9 <PID> # 结束相关进程权限不足问题:
sudo -i # 切换到root再执行删除残留的容器进程:
for cnt in $(docker ps -aq 2>/dev/null); do docker rm -f $cnt done存储驱动差异: 如果使用过 devicemapper 等存储驱动,可能需要额外清理:
sudo dmsetup remove_all sudo wipefs -a /dev/mapper/docker-*
通过这五个步骤的系统性清理,可以确保 Docker 环境被彻底移除,为新安装或系统恢复提供干净的基础环境。