如何在 Ubuntu 系统上完全移除 Docker 及其所有数据

在使用 Ubuntu 进行开发或学习时,Docker 是一个不可或缺的工具。但有时,你可能需要卸载它,例如:为了解决版本冲突、清理环境,或者准备进行全新的安装。仅仅通过 apt remove 命令并不能完全清除 Docker 留下的所有文件和数据。

本文将提供一份详尽的指南,帮助你在 Ubuntu 系统上彻底、干净地卸载 Docker,涵盖所有主流的安装方式。

写在前面:卸载前的准备

在开始卸载之前,请务必注意:

  • 数据备份 :卸载过程会删除所有 Docker 镜像、容器、卷和网络。这是一个不可逆的操作。如果你有任何需要保留的容器或数据卷,请确保提前备份。

  • 停止服务:首先停止所有正在运行的 Docker 容器和 Docker 服务本身。

    bash 复制代码
    # 停止所有正在运行的容器
    docker stop $(docker ps -aq)
    
    # 停止 Docker 服务
    sudo systemctl stop docker docker.socket containerd

第一步:确定你的 Docker 安装方式

选择正确的卸载方法至关重要。你可以通过以下命令快速判断:

  • 检查安装来源

    bash 复制代码
    # 如果是通过 Apt 安装,会显示包名(如 docker-ce)
    dpkg -l | grep docker
    
    # 如果是通过 Snap 安装,会显示 snap 包
    snap list | grep docker

接下来,请根据你的安装方式选择对应的卸载方法。


第二步:选择正确的卸载方法

方法一:卸载通过 Apt 安装的 Docker(最常见)

如果你是通过 Docker 官方仓库或 Ubuntu 仓库安装的,请使用此方法。

  1. 卸载 Docker 软件包

    使用 apt purge 命令不仅移除软件,还会删除配置文件。

    bash 复制代码
    sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  2. 删除所有 Docker 数据(关键步骤)

    这一步将永久删除所有镜像、容器和卷。如果你确定要清理一切,请执行:

    bash 复制代码
    sudo rm -rf /var/lib/docker
    sudo rm -rf /var/lib/containerd
    • /var/lib/docker 是 Docker 默认存储所有数据的核心目录。
  3. 清理残留配置(可选)

    删除 Docker 的 Apt 源列表文件,并自动移除不再需要的依赖包。

    bash 复制代码
    # 删除源列表(如果存在)
    sudo rm /etc/apt/sources.list.d/docker.list
    
    # 清理残留依赖
    sudo apt autoremove
方法二:卸载通过 Snap 安装的 Docker

如果你的安装命令包含 snap,那么卸载非常简单,一条命令即可搞定。Snap 会自动处理所有相关文件和依赖。

bash 复制代码
sudo snap remove docker
方法三:卸载使用官方脚本安装的 Docker

如果你曾经运行过 Docker 官方的便捷安装脚本(get-docker.sh),则需要手动卸载,步骤类似方法一:

  1. 删除二进制文件 :脚本安装的文件通常在 /usr/bin/ 目录下。

    bash 复制代码
    sudo rm -f /usr/bin/docker /usr/bin/dockerd /usr/bin/containerd /usr/bin/ctr ...
  2. 删除数据目录 :同方法一,删除 /var/lib/docker/var/lib/containerd

  3. 删除系统服务文件

    bash 复制代码
    sudo rm -f /lib/systemd/system/docker.service
    sudo rm -f /lib/systemd/system/containerd.service
    sudo systemctl daemon-reload  # 重新加载 systemd 配置

第三步:验证卸载是否成功

执行完卸载步骤后,最好验证一下是否已完全清除。

  1. 检查 Docker 命令:如果卸载成功,终端会提示"未找到命令"。

    bash 复制代码
    docker --version
    # 输出示例:Command 'docker' not found...
  2. 检查服务状态:系统应该不再识别 Docker 服务。

    bash 复制代码
    systemctl status docker
    # 输出示例:Unit docker.service could not be found.
  3. 检查数据目录:确认数据目录已被删除。

    bash 复制代码
    ls /var/lib/ | grep docker
    # 如果没有任何输出,说明目录已成功删除

总结

为了让你一目了然,整个卸载过程的精髓可以总结为以下流程图,它清晰地展示了不同安装方式对应的卸载路径:
Apt安装 Snap安装 官方脚本安装 开始卸载Ubuntu Docker 确定安装方式 卸载软件包
sudo apt purge ... 删除数据目录
sudo rm -rf /var/lib/docker 验证卸载结果 一条命令卸载
sudo snap remove docker 手动删除二进制文件
与数据目录 卸载完成

希望这篇指南能帮助你干净利落地完成 Docker 的卸载,为后续的操作扫清障碍。如果你在操作过程中遇到任何问题,欢迎在评论区留言讨论!

相关推荐
嵩山小老虎9 小时前
Windows 10/11 安装 WSL2 并配置 VSCode 开发环境(C 语言 / Linux API 适用)
linux·windows·vscode
Fleshy数模9 小时前
CentOS7 安装配置 MySQL5.7 完整教程(本地虚拟机学习版)
linux·mysql·centos
a413244710 小时前
ubuntu 25 安装vllm
linux·服务器·ubuntu·vllm
一只自律的鸡11 小时前
【Linux驱动】bug处理 ens33找不到IP
linux·运维·bug
17(无规则自律)12 小时前
【CSAPP 读书笔记】第二章:信息的表示和处理
linux·嵌入式硬件·考研·高考
!chen12 小时前
linux服务器静默安装Oracle26ai
linux·运维·服务器
REDcker12 小时前
Linux 文件描述符与 Socket 选项操作详解
linux·运维·网络
蒹葭玉树12 小时前
【C++上岸】C++常见面试题目--操作系统篇(第二十八期)
linux·c++·面试
2501_9277730712 小时前
imx6驱动
linux·运维·服务器
hy____12312 小时前
Linux_进程间通信
linux·运维·服务器