Docker 無法移除死掉的 Container 修復

Docker 遇到 container 的狀態是 Dead,想要移除卻無法移除,該怎麼做?

  • $ docker ps -a
    CONTAINER ID STATUS
    11667ef16239 Dead

Docker 無法移除死掉的 Container 修復

Docker 都是 mount storage 在 /var/lib/docker,所以可以直接在 /var/lib/docker/ 的 containers 、volumes 找到 container id,然後來做 umount 或 rm -fr 的動作。

此篇文章有提到幾種解法:Docker - Cannot remove dead container,下述整理自此篇:

方法1

  • sudo rm -rf /var/lib/docker/<storage_driver>/11667ef16239.../

方法2

  • 遇到:Error response from daemon: Cannot destroy container elated_wozniak: Driver devicemapper failed to remove root filesystem 656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3: Device is Busy
  • umount /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3

方法3

  • $ docker rm $(docker ps --all -q -f status=dead) # 將 DEAD 的 container 移除

Docker 1.13 後,可以採用下述作法:

  1. $ docker system df # 秀出目前使用的空間
  2. $ docker system prune # 移除所有未使用的資料

方法4

此方法用在 /var/lib/docker 裡面找不到 container id,於是建立起來讓程式刪除

  1. mkdir /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3
  2. mkdir /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3-init
  3. docker rm 656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3
  4. docker rm 若刪不到資料,可能是建立起來就自動被刪掉了

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料