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 後,可以採用下述作法:
- $ docker system df # 秀出目前使用的空間
- $ docker system prune # 移除所有未使用的資料
方法4
此方法用在 /var/lib/docker 裡面找不到 container id,於是建立起來讓程式刪除
- mkdir /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3
- mkdir /var/lib/docker/devicemapper/mnt/656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3-init
- docker rm 656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3
- docker rm 若刪不到資料,可能是建立起來就自動被刪掉了