关于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

删除成功。

总结

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

相关文章

  • 使用docker-compose部署mysql的完整步骤

    使用docker-compose部署mysql的完整步骤

    Compose是用于定义和运行多容器Docker应用程序的工具,通过Compose可以使用YAML文件来配置应用程序的服务,下面这篇文章主要给大家介绍了关于使用docker-compose部署mysql的相关资料,需要的朋友可以参考下
    2022-08-08
  • Docker网络之部署redis集群方式

    Docker网络之部署redis集群方式

    文章介绍了如何部署和测试Redis集群,包括创建配置文件、启动容器、查看集群信息以及模拟节点故障进行测试
    2025-01-01
  • docker安装seafile企业云盘方式

    docker安装seafile企业云盘方式

    本文详细介绍了如何在Docker中安装和配置Seafile,包括基础安装、生产环境配置、HTTPS设置、数据备份与恢复以及常见问题解决,通过这些步骤,您可以快速部署一个稳定且安全的Seafile实例
    2025-02-02
  • Docker下安装Mongo4.2及客户端工具连接Mongo

    Docker下安装Mongo4.2及客户端工具连接Mongo

    这篇文章主要介绍了Docker下安装Mongo4.2和客户端工具连接Mongo数据库的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • docker 的java编译环境构建详细介绍

    docker 的java编译环境构建详细介绍

    这篇文章主要介绍了docker 的java编译环境构建详细介绍的相关资料,具有一定的参考价值,需要的朋友可以参考下
    2016-11-11
  • docker mysql5.7如何设置不区分大小写

    docker mysql5.7如何设置不区分大小写

    本文主要介绍了docker mysql5.7如何设置不区分大小写,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 如何修改docker的port端口映射

    如何修改docker的port端口映射

    通过docker ps -a查看容器ID,停止容器后,编辑/var/lib/docker/containers目录下对应的json文件以修改端口映射,重启docker服务后启动容器
    2024-11-11
  • Docker-Compose的使用示例详解

    Docker-Compose的使用示例详解

    docker-compose是用来在Docker中定义和运行复杂应用的工具,比如在一个yum文件里定义多个容器,只用一行命令就可以让一切就绪并运行。下面通过示例给大家介绍Docker-Compose的使用,感兴趣的朋友一起看看吧
    2017-07-07
  • WIN10系统和Docker内部容器IP互通方式

    WIN10系统和Docker内部容器IP互通方式

    这篇文章主要介绍了WIN10系统和Docker内部容器IP互通方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Mac上使用Docker搭建kafka集群方式

    Mac上使用Docker搭建kafka集群方式

    这篇文章主要介绍了Mac上使用Docker搭建kafka集群方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02

最新评论