我刚刚发现service docker stop
Ubuntu 18.04 不会关闭所有正在运行的容器。我无法再控制它们,但containerd-ship
进程和容器内的所有内容仍在运行(但无法访问,可能是因为网络被移除了)。
此外,停止 containerd 不会改变任何事情,因为根据设计,这不会停止容器。
即使经过killall containerd-shim
了如此严酷的考验,一些进程仍然在运行,比如gunicorn
gitlab、backuppc 和 Linux UML 实例
如何彻底关闭所有正在运行的容器?当前的行为导致我的系统在关闭时挂起。
更新:我刚刚看到我正在使用 repo(https://download.docker.com/linux/ubuntu) 来自 Kubernetes 教程(我还没用过)。该源提供了 containerd.io、docker-ce 和 docker-ce-cli 的专有版本
答案1
问题解决了。
重点是我有一个额外的存储库,直接来自docker(https://download.docker.com/linux/ubuntu) 带来了 containerd.io、docker-ce 和 docker-ce-cli 的专有版本。另一方面,Ubuntu 世界甚至不在我的考虑范围内/etc/apt/source.list
。
我现在已更新至 20.04 并使用来自 ubuntu universe 的原始 docker 软件包 (docker.io)。这运行良好,并按预期关闭。我确信这在 18.04 上也能正常工作,但我想通过切换 repo 来避免降级 docker。
答案2
在我的 Ubuntu 18.04 安装中,systemctl stop docker
所有正在运行的容器都会关闭。systemctl start docker
然后再次启动所有容器。我同意 BMitch 的观点,需要有关安装的更多信息才能诊断问题。
关闭所有正在运行的容器的另一种方法是:
docker ps -q | xargs docker stop