如何完全卸载Docker

我按照这里的卸载说明进行操作,然后运行了这些命令:
sudo apt-get purge docker-engine
sudo apt-get autoremove --purge docker-engine
rm -rf /var/lib/docker

所以在我完成所有这些操作之后,我运行了这个命令来查看是否还有其他地方存在Docker文件:
sudo find / -name '*docker*'

我发现了几个仍然存在docker文件的地方。
/etc
/sys
/lib
/usr
/usr
/run
/proc
/var

在上面的列表中,Docker存在于子文件夹中。如果您愿意,我可以发布每个路径。大约有200个位置。

有没有一种完全彻底地删除Docker的方法?

10个回答

要完全卸载Docker:

步骤 1

dpkg -l | grep -i docker

要确定你安装了哪个软件包:

步骤2

sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli docker-compose-plugin
sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce docker-compose-plugin

以上命令不会删除您主机上的图像、容器、卷或用户创建的配置文件。如果您希望删除所有图像、容器和卷,请运行以下命令:
sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo rm -rf /var/run/docker.sock

您已将Docker完全从系统中移除。

22另外,我还不得不删除/usr/local/bin/docker-compose - Gaia
21我还记得要删除/etc/docker目录和所有内容。 - paulperry
28我在执行$ sudo iptables -L命令后,看到了与Docker相关的条目。 - eugene
1@eugene 我也能看到与Docker相关的条目,你有什么建议我现在该做什么。 - Devansh
2@Devansh 我运行了https://serverfault.com/a/200658/184963,但它会清除所有内容..所以要小心..我没有设置任何规则,只有docker添加的。 - eugene
16就我的情况而言,我还必须使用sudo apt-get purge docker-ce-cli - irene
18我还必须删除~/.docker目录。 - SBH
1如果所有这些都失败了,那么你可能是用snap安装的。哈哈。 - mango
5可能还有其他方法,不需要重新启动,但重新启动将删除sudo iptables -L中的剩余条目。 - We Are All Monica
无法在 Docker 19.03 上为我工作。 - Mcsky
@WeAreAllMonica ,我尝试逐个删除所有的Docker规则,并且也移除了链路。 - Zeinab Abbasimazar
1我使用了iptables-save | grep -v -i docker | iptables-restore的命令来删除了防火墙规则和链条,具体操作可以参考这里。在执行之前,我先进行了备份,将当前的防火墙规则保存到了一个以日期命名的文件中,具体操作可以参考这里iptables-save > $(date -I)-iptables.save - Pablo Bianchi
也可以使用sudo rm /usr/share/keyrings/docker-archive-keyring.gpg - tomsihap
3首先,通过使用命令"docker system prune -a",将所有数据(包括图像、卷和网络)从Docker中清除是有意义的。然后,再移除Docker软件包本身。 - Hamza AZIZ
3我还必须在命令中包含 containerd.io - Omar Omeiri
还可以运行ip link delete docker0来摆脱登录时出现的烦人消息IPv4 address for docker0: 172.17.0.1 - Mikhail Kashkin
在我的系统中,该软件包也被命名为containerd.io - shitpoet
在Ubuntu 20.04上对我有效的咒语是 sudo apt-get remove docker docker.io containerd runc - Saïd
在运行了所有这些命令之后,我仍然看到了docker-buildx-plugin,然后再次运行了dpkg -l | grep -i docker。通过运行sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras将其移除。所以我认为首先要运行的是文档中的内容。 - undefined

如果你使用的是Ubuntu系统,我发现如果使用snap安装了docker,卸载会更加简单。你只需要执行以下命令:
sudo snap remove docker

或者,为了避免它为您不再需要的快照创建备份数据:
sudo snap remove --purge docker

为了查找可能剩余的文件,你可以运行
sudo find / -name "*docker*"

如果你想删除所有列出的内容(请小心,因为这通常不是你真正想要的),你可以运行以下命令:
sudo find / -name "*docker*" -exec `rm -rf` {} +

重要更新

如评论中所提到的,

第二部分是不必要的而且危险的,至少先运行没有 -exec `rm -rf` {} + 的命令。

以及

第二部分可能会删除属于其他软件包的文件,例如 /usr/share/vim/vim80/syntax/dockerfile.vim

因此最好先查看将要被删除的内容。


25snap 命令足够好用,但在删除系统中带有 docker 名称的所有内容之前,请小心处理! - davidbak
1你救了我的MAAS盒子 :) - David West
sudo find / -name "docker" -exec rm -rf {} + 2>/dev/null 是我使用的有效方法。 - HashTables
9第二部分是不必要的,而且非常危险,至少先运行它而不带 -exec \rm -rf` {} +`。 - Ecker00
2第二部分可以删除属于不同软件包的文件,例如 /usr/share/vim/vim80/syntax/dockerfile.vim - orestisf
2那个最后的 find 命令可能会带来更多的伤害而不是好处。 - Dan

从以上帖子和评论中收集的合作名单,用于移除Docker和Docker Compose的目的。
sudo apt-get purge -y docker-engine docker docker.io docker-ce  
sudo apt-get autoremove -y --purge docker-engine docker docker.io docker-ce  
sudo umount /var/lib/docker/
sudo rm -rf /var/lib/docker /etc/docker
sudo rm /etc/apparmor.d/docker
sudo groupdel docker
sudo rm -rf /var/run/docker.sock
sudo rm -rf /usr/bin/docker-compose

在清除docker时,同时添加docker-ce-cli软件包。
sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli

在Centos 7上卸载Docker的步骤如下:
yum list installed|grep -i docker
yum remove containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64
groupdel docker
ls /var/lib/docker/
rm -rf  /var/lib/docker /etc/docker
rm -rf  /var/run/docker.sock 
rm -rf  /var/run/docker
find /var -iname "*docker*"

希望这些信息对某人有所帮助。
最好的祝福。

卸载Docker的最新消息

只是关于这个问题的最新消息,因为我也遇到了同样的问题。

这里是官方Docker文档关于如何移除Docker的链接。


移除最新版本:

卸载 Docker 引擎、CLI 和 Containerd 软件包:

sudo apt-get purge docker-ce docker-ce-cli containerd.io

删除所有图片、容器和卷:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

删除之前的版本:

sudo apt-get remove docker docker-engine docker.io containerd runc

完全删除Docker
dpkg -l | grep -i docker
sudo apt remove --purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo apt autoremove -y
sudo apt autoclean

刷新安装Docker桌面版和docker-ce,测试完Docker桌面版的安装后。
在Ubuntu 22.04上卸载Docker桌面版和docker-ce(删除所有内容)之后,
然后仅重新安装Docker引擎(ce),因为我想在主机上和qemu/virt上分别运行Docker实例,并能够运行hello-world,但是我遇到了这个错误 $ docker ps 无法连接到unix:///home/christian/.docker/desktop/docker.sock的Docker守护程序。Docker守护程序是否正在运行?
尽管用户具有docker组成员身份和权限。
发生的情况是,尽管完全卸载了docker-desktop和docker-ce,然后从头重新安装,但我仍然不断收到此错误。 没有.docker/desktop/文件夹
我找到了一个config.json文件 .docker/config.json
其中有一行 "credsStore": "desktop", "currentContext": "desktop-linux"
所以我将其复制为.bak扩展名,从那时起,docker命令可以正常工作,无需sudo
看起来卸载Docker桌面版至少会留下这个残留物。

您可以使用类似命令 dpkg-query -S $(sudo find / -name '*docker*' -print 2>/dev/null) 来确定这些文件来自哪个软件包。您可以使用 sudo apt-get purge <package> 移除您不需要的任何此类软件包。请小心操作,因为某些软件包可能包含 Docker 的一些支持,但您可能不想因此删除某个文本编辑器或文件管理器等。

如果某些文件并非来自软件包(通过 "dpkg-query: no path found matching pattern path" 表示),您可以单独删除它们。同样,请谨慎操作,因为可能存在与您想要移除的 Docker 无关的文件,只是其名称中包含字符串 "docker"。


dpkg查询会返回成千上万个“dpkg-query: no path found matching pattern”的结果,这并不是很有用。 - Andrew Savinykh

// check docker is installed or not
dpkg -l | grep -i docker

// remove volume , network , container and image files
sudo docker volume prune -f
sudo docker network prune -f
sudo docker container prune -f
sudo docker image prune -a

// remove docker
sudo apt purge docker
or
sudo apt remove docker

// remove dependency packages related to docker
sudo apt autoremove
sudo apt autoclean


详情请参阅:阅读