关于Docker容器Dead状态的分析

2023-12-01 0 135
目录
  • Docker容器Dead状态分析
    • 报错
    • 原因分析
    • 解决方法(一)
    • 解决方法(二)
  • Docker删除dead状态的容器
    • 总结

      Docker容器Dead状态分析

      报错

      [root@docker ~]# docker rm -f nginx-webError response from daemon: Driver devicemapper failed to remove root filesystem 2205f0562812bf3007155f3bb2670508783e23d12428e31fa42caa0d8f68ca22: remove /data01/var/lib/docker/devicemapper/mnt/01bf74d1cd26d2fed52d2eb2f881acd0401431952e7c115ffc3107311c191341: device or resource busy

      原因分析

      挂载泄露

      解决方法(一)

      这种方式会有删除不掉的情况,所以在用在这种方式删除前重启服务器,那么就能删除掉.

      docker stop share-mnt 1>/dev/null 2>&1 | exit 0
      docker rm -f share-mnt 1>/dev/null 2>&1 | exit 0

      解决方法(二)

      先到docker目录 一般在 /var/lib/docker 删除相应文件夹目录

      grep docker /proc/*/mountinfo | grep nginx-web | awk -F\’:\’ \'{print $1}\’ | awk -F\’/\’ \'{print $3}\’

      查出进程号,然后使用kill -9 ID .

      再使用docker rm -f ID/name 删除掉 .

      有时候测试的时候会生成大量的容器,一个一个停用然后删除没有效率.

      停用全部运行中的容器:
      docker stop $(docker ps -q)
      删除全部容器:
      docker rm $(docker ps -aq)
      一条命令实现停用并删除容器:
      docker stop $(docker ps -q) & docker rm $(docker ps -aq)

      报错

      Error response from daemon: conflict: unable to delete d8638d086558 (cannot be forced) – image has dependent child images

      在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器(哪怕是已经停止的容器),否则无法删除该镜像.

      停止容器
      # docker stop $(docker ps -a | grep \”Exited\” | awk \'{print $1 }\’)
      删除容器
      # docker rm $(docker ps -a | grep \”Exited\” | awk \'{print $1 }\’)
      删除镜像
      # docker rmi $(docker images | grep \”none\” | awk \'{print $3}\’)

      Docker删除dead状态的容器

      出现原因:由于容器挂载数据卷,无法直接删除

      其现象如下:

      docker ps -a

      关于Docker容器Dead状态的分析

      docker rm ytn

      关于Docker容器Dead状态的分析

      解决方法1:尝试强制删除 docker rm -f ytn

      解决方法2:先查出其进程,kill掉,在进行删除

      1.查 ,复制上图白底部分,用以下命令进行查找

      grep 00979f0816bf1c1df375fad83dbf3d023243728345ae9b81bc3b0f1762b15af8 /proc/*/mountinfo

      结果:

      关于Docker容器Dead状态的分析

      2.kill进程

      kill -9 7018
      kill -9 7019

      3.再次查看,确认已经kill完

      grep 00979f0816bf1c1df375fad83dbf3d023243728345ae9b81bc3b0f1762b15af8 /proc/*/mountinfo

      4.再次删除容器

      docker rm ytn

      关于Docker容器Dead状态的分析

      删除成功。

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持悠久资源网。

      收藏 (0) 打赏

      感谢您的支持,我会继续努力的!

      打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
      点赞 (0)

      悠久资源 Linux服务器 关于Docker容器Dead状态的分析 https://www.u-9.cn/server/linux/2899.html

      常见问题

      相关文章

      发表评论
      暂无评论
      官方客服团队

      为您解决烦忧 - 24小时在线 专业服务