Docker 彻底卸载指南:CentOS/Ubuntu 双系统 5 步清理残留文件

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-engine

3. 残留文件深度清理

无论哪种系统,卸载包后都会留下大量配置文件和数据。以下是需要手动删除的关键目录:

目录路径内容类型删除命令
/var/lib/docker容器和镜像数据sudo rm -rf /var/lib/docker
/var/lib/containerdcontainerd 数据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 docker

4.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"

系统状态检查

  1. 检查关键目录是否已清空:
    ls -ld /var/lib/docker /etc/docker
  2. 检查进程是否完全退出:
    ps aux | grep -E 'docker|containerd'

可选:系统还原
如果需要完全恢复系统到安装前的状态,可以考虑:

# Ubuntu sudo apt-get update && sudo apt-get upgrade -y # CentOS sudo yum update -y

常见问题解决方案

在实际操作中可能会遇到以下问题:

  1. 文件被占用无法删除

    sudo lsof /var/lib/docker # 查看占用进程 sudo kill -9 <PID> # 结束相关进程
  2. 权限不足问题

    sudo -i # 切换到root再执行删除
  3. 残留的容器进程

    for cnt in $(docker ps -aq 2>/dev/null); do docker rm -f $cnt done
  4. 存储驱动差异: 如果使用过 devicemapper 等存储驱动,可能需要额外清理:

    sudo dmsetup remove_all sudo wipefs -a /dev/mapper/docker-*

通过这五个步骤的系统性清理,可以确保 Docker 环境被彻底移除,为新安装或系统恢复提供干净的基础环境。