要彻底卸载 Docker,关键是停服、删包、清目录、验证这四步。可以按照下面这个清单来排查和清理,确保系统干净。
1. 第一步:停止并禁用所有相关服务
先确保 Docker 相关的服务都已停止:
# 1. 停止服务
sudo systemctl stop docker docker.socket containerd
# 2. 禁用开机自启 (可选)
sudo systemctl disable docker docker.socket containerd
2. 第二步:删除所有容器、镜像和网络
这是最容易忽略的一步。在卸载前,应先用 Docker 命令清理干净,防止系统内有残存的数据对象。
# 1. 列出所有容器并强制删除
docker ps -a -q | xargs -r docker rm -f
# 2. 列出所有镜像并强制删除
docker images -q | xargs -r docker rmi -f
# 3. 清理所有未被使用的网络
docker network prune -f
注意:如果
docker命令已失效,可能是之前的卸载操作已损坏,可以跳过此步直接进行文件清理。
3. 第三步:卸载Docker软件包
通过 yum 包管理器移除 Docker 相关的所有软件包:
# 1. 查看已安装的Docker相关包
yum list installed | grep docker
# 2. 一次性卸载所有Docker核心组件
sudo yum remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
⚠️ 潜在问题:yum remove 提示依赖错误
如果你安装过某些容器管理工具,卸载时可能遇到依赖冲突。这时,可以使用 rpm -e --nodeps 命令来强制卸载(例如 sudo rpm -e --nodeps docker-ce),这会忽略依赖关系直接移除该软件包。
4. 第四步:清理残留文件和目录
卸载软件包后,必须手动删除 Docker 产生的所有运行时数据和配置文件:
# 核心数据目录 (⚠️ 会永久删除所有镜像、容器、卷数据)
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
# 配置文件目录
sudo rm -rf /etc/docker
# 运行时数据目录
sudo rm -rf /run/docker
# Docker 的 Systemd 服务文件
sudo rm -f /etc/systemd/system/docker.service
sudo rm -f /etc/systemd/system/docker.socket
sudo rm -f /etc/systemd/system/containerd.service
sudo systemctl daemon-reload
💡 提示:清理磁盘占用
如果你的磁盘空间紧张,可在清理 /var/lib/docker 前,使用 du -sh /var/lib/docker 查看其具体占用大小,做到心中有数。
5. 第五步:清理仓库源文件
如果你不打算重装 Docker,可以删掉它的仓库源文件:
sudo rm -f /etc/yum.repos.d/docker-ce.repo
6. 第六步:验证卸载是否彻底
最后,执行以下检查,确保没有遗漏:
- 检查软件包:
yum list installed | grep docker应该没有输出。 - 检查命令:
docker --version应该提示 “command not found”。 - 检查服务状态:
sudo systemctl status docker应该显示服务未找到或已停止。 - 检查关键目录:
ls /var/lib/docker和ls /etc/docker应该提示 “No such file or directory”。
按以上步骤操作后,你的 CentOS 7 系统里的 Docker 就能被彻底清除了。