2019年8月27日 星期二

[ 文章收集 ] Docker 無法移除死掉的 Container 修復

Source From Here 
Question 
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 
這個方法直接移除檔案系統上的 image/container 資料夾: 
# ls /var/lib/docker/
containers image network overlay2 plugins swarm tmp trust volumes

# ls /var/lib/docker/containers/
549d87f7c6543c31510ec3301772574377e11f1b59b4004d54a91891ec45c755

# ds -aq
549d87f7c654

// 刪除 container id=549d87f7c654 
# sudo rm -rf /var/lib/docker/containers/549d87f7c654.../

方法2 
遇到: 
Error response from daemon: Cannot destroy container elated_wozniak:
Driver devicemapper failed to remove root filesystem 656cfd09aee399c8ae8c8d3e735fe48d70be6672773616e15579c8de18e2a3b3: Device is Busy

找到 mount 的 location 後 umount 它 再移除. 

方法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 若刪不到資料,可能是建立起來就自動被刪掉了

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...