如何在 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 的卸载,为后续的操作扫清障碍。如果你在操作过程中遇到任何问题,欢迎在评论区留言讨论!

相关推荐
Yyyy4827 小时前
Ubuntu安装Jenkis
linux·运维·ubuntu
tzhou644527 小时前
Docker容器技术指南
运维·docker·容器
zhuzewennamoamtf7 小时前
Linux SPI设备驱动
android·linux·运维
春日见7 小时前
在虚拟机上面无法正启动机械臂的控制launch文件
linux·运维·服务器·人工智能·驱动开发·ubuntu
松涛和鸣8 小时前
Linux Makefile : From Basic Syntax to Multi-File Project Compilation
linux·运维·服务器·前端·windows·哈希算法
Predestination王瀞潞8 小时前
JDK安装及环境变量配置
java·linux·开发语言
再睡一夏就好9 小时前
深入Linux线程:从轻量级进程到双TCB架构
linux·运维·服务器·c++·学习·架构·线程
小小药9 小时前
09-vmware配置虚机连接互联网-nat模式
linux·运维·centos
Bright Xu9 小时前
Qemu 安装 LoongArch架构 Fedora Remix F42 Linux系统
linux·loongarch·国产cpu
莫白媛9 小时前
Linux创作笔记综合汇总篇
linux·运维·笔记