关于Docker容器Dead状态的分析

 更新时间:2023年07月27日 16:27:44   作者:清风的BLOG  
这篇文章主要介绍了关于Docker容器Dead状态的分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Docker容器Dead状态分析

报错

[root@docker ~]# docker rm -f nginx-web
Error 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 rm ytn

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

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

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

grep 00979f0816bf1c1df375fad83dbf3d023243728345ae9b81bc3b0f1762b15af8 /proc/*/mountinfo

结果:

2.kill进程

kill -9 7018
kill -9 7019

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

grep 00979f0816bf1c1df375fad83dbf3d023243728345ae9b81bc3b0f1762b15af8 /proc/*/mountinfo

4.再次删除容器

docker rm ytn

删除成功。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Alpine Docker镜像字体的问题解决操作

    Alpine Docker镜像字体的问题解决操作

    这篇文章主要介绍了Alpine Docker镜像字体的问题解决操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Docker容器排错必知的8个命令详解

    Docker容器排错必知的8个命令详解

    本文介绍了8个实用的Docker排错命令,包括查看容器日志,检查容器详细信息和进入容器内部排查等,些命令涵盖了Docker排错的完整链路,可以帮助大家快速定位和解决问题
    2026-04-04
  • Docker 环境 Nacos2 MySQL8的详细操作

    Docker 环境 Nacos2 MySQL8的详细操作

    本文介绍 docker 环境下安装并单机运行 Nacos2,使用 docker 环境下的 MySQL 8 存储数据 ,对Docker 环境 Nacos2 MySQL8相关知识感兴趣的朋友跟随小编一起看看吧
    2022-09-09
  • 使用Docker部署的基于binlog实现Mysql8的操作方法

    使用Docker部署的基于binlog实现Mysql8的操作方法

    MySQL 基于 Binlog 的主从复制(Master-Slave Replication)是 MySQL 数据库中实现数据复制的一种机制,这篇文章主要介绍了使用Docker部署的基于binlog实现Mysql8,需要的朋友可以参考下
    2025-01-01
  • Docker部署Flask应用的实现步骤

    Docker部署Flask应用的实现步骤

    这篇文章主要介绍了Docker部署Flask应用的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Docker 默认bridge网络中配置DNS的方法

    Docker 默认bridge网络中配置DNS的方法

    这篇文章主要介绍了Docker 默认bridge网络中配置DNS的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • docker-compose配置文件的使用及说明

    docker-compose配置文件的使用及说明

    这篇文章详细介绍了Docker Compose配置文件的语法、版本兼容性、服务定义、网络配置、安全性和其他注意事项,还提供了调试和测试Docker Compose配置文件的方法,包括基本检查、启动和日志查看、服务状态检查、网络和端口测试、逐步调试和模拟生产环境
    2025-11-11
  • Docker容器不识别宋体等字体的解决方案

    Docker容器不识别宋体等字体的解决方案

    这篇文章主要介绍了Docker容器不识别宋体等字体的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Docker轻松自建RustDesk服务器的实现步骤

    Docker轻松自建RustDesk服务器的实现步骤

    本文介绍通过Docker和自动化脚本在Linux服务器部署RustDesk的hbbs和hbbr组件,实现自建私有服务器以提升隐私、安全与灵活性,并提供客户端配置及注意事项,感兴趣的可以了解一下
    2025-09-09
  • 详解Docker使用Linux iptables 和 Interfaces管理容器网络

    详解Docker使用Linux iptables 和 Interfaces管理容器网络

    这篇文章主要介绍了详解Docker使用Linux iptables 和 Interfaces管理容器网络的相关内容,涉及Linux 网桥接口,iptables等,内容丰富,需要的朋友可以了解下。
    2017-09-09

最新评论