關閉所有docker容器

關閉所有docker容器

我剛剛發現service docker stopUbuntu 18.04 上並不會關閉所有正在運行的容器。我無法再控制它們,但containerd-ship容器內的進程和所有內容仍在運行(但無法訪問,可能是因為網路已刪除)。

此外,停止 Containerd 不會改變任何內容,因為按照設計,這不會停止容器。

即使在killall containerd-shim這已經相當嚴酷之後,一些進程仍在運行,例如gunicorn來自 gitlab、backuppc 和 Linux UML 實例

如何徹底關閉所有正在運行的容器?目前的行為導致我的系統在關閉時掛起。

更新:我剛剛看到我正在使用回購協議(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 宇宙中的原始 docker 軟體包 (docker.io)。這工作正常,並按預期關閉。我確信這也適用於 18.04,但希望避免透過切換儲存庫來降級 docker。

答案2

在我的 Ubuntu 18.04 安裝中,systemctl stop docker會關閉所有正在執行的容器。systemctl start docker再次啟動所有容器。我同意 BMitch 的觀點,人們需要有關您的安裝的更多資訊來診斷問題。

關閉所有正在運行的容器的另一種方法是:

docker ps -q | xargs docker stop

相關內容