真正干净卸载Docker需分步操作:先备份镜像、卷、配置等关键数据;再停止并删除所有容器、镜像、网络及卷;接着手动清除/var/lib/docker、/etc/docker等核心目录和systemd服务文件;最后验证docker命令不存在、目录无残留、服务未注册。
卸载 Docker 不能只靠包管理器删软件,残留的镜像、容器、卷、配置和系统服务会干扰重装或占用大量空间。真正干净的卸载需要分步操作:先备份关键数据,再逐层清理运行时资源,最后清除系统级文件和配置。
删除不可逆,尤其镜像和卷里的业务数据。重点备份以下几类:
docker save -o backup.tar nginx:latest 导出单个或多个镜像/var/lib/docker/volumes/,直接复制对应目录到安全位置/etc/docker/daemon.json(全局配置)和 ~/.docker/config.json(用户登录信息)这部分可分步执行,避免误删正在使用的资源:
docker stop $(docker ps -aq) && docker rm -f $(docker ps -aq)
docker rmi -f $(docker images -q)(注意:需确保无容器依赖该镜像)docker system prune -a -f,它会删掉悬空镜像、未使用的网络、构建缓存和已停止容器docker volume rm $(docker volume ls -q),仅在确认卷中无关键数据时执行包管理器卸载后,这些目录和服务仍存在,必须手动清除:
sudo rm -rf /var/lib/docker /var/lib/containerd
sudo rm -rf /etc/docker /run/docker.sock /var/run/docker.sock
rm -rf ~/.docker
sudo rm -f /lib/systemd/system/docker*.service /etc/systemd/system/docker*.service.d,然后执行 sudo systemctl daemon-reload
sudo groupdel docker 2>/dev/null
执行以下检查确认无残留:
docker version 应报“command not found”ls /var/lib/docker 应提示“no such file or directory”systemctl list-unit-files | grep docker 不应有输出find / -name "*docker*" 2>/dev/null | grep -E "(bin|sbin|lib)",对非系统路径下的残留酌情处理