docker - 驱动程序 "devicemapper"在容器中的进程被杀死后无法删除根文件系统

标签 docker redhat device-mapper

我在 Redhat 上使用 Docker 版本 17.06.0-ce 和 devicemapper 存储。我正在启动一个运行长期服务的容器。容器内的主进程有时会因任何原因而死亡。我收到以下错误消息。

/bin/bash: line 1: 40 Killed python -u scripts/server.py start go

我希望容器退出并由 docker 重新启动。但是 docker 永远不会退出。如果我手动执行,则会出现以下错误:

来自守护进程的错误响应:驱动程序“devicemapper”未能删除根文件系统。

谷歌搜索后,我尝试了很多东西:

docker rm -f <container>
rm -f <pth to mount>
umount <pth to mount>

设备中的所有结果都处于忙碌状态。现在唯一的补救办法是重新启动主机系统,这显然不是一个长期的解决方案。

有任何想法吗?

最佳答案

我遇到了同样的问题,解决方案真是令人惊讶。

所以这是 om docker rm 的错误:

$ docker rm 08d51aad0e74
Error response from daemon: driver "devicemapper" failed to remove root filesystem for 08d51aad0e74060f54bba36268386fe991eff74570e7ee29b7c4d74047d809aa: remove /var/lib/docker/devicemapper/mnt/670cdbd30a3627ae4801044d32a423284b540c5057002dd010186c69b6cc7eea: device or resource busy

然后我执行了以下操作(基本上遍历所有进程并在 mountinfo 中查找 docker):
$  grep docker /proc/*/mountinfo | grep 958722d105f8586978361409c9d70aff17c0af3a1970cb3c2fb7908fe5a310ac
/proc/20416/mountinfo:629 574 253:15 / /var/lib/docker/devicemapper/mnt/958722d105f8586978361409c9d70aff17c0af3a1970cb3c2fb7908fe5a310ac rw,relatime shared:288 - xfs /dev/mapper/docker-253:5-786536-958722d105f8586978361409c9d70aff17c0af3a1970cb3c2fb7908fe5a310ac rw,nouuid,attr2,inode64,logbsize=64k,sunit=128,swidth=128,noquota

这是有问题的进程的 PID 使其忙碌 - 20416(/proc/之后的项目)

所以我做了一个 ps -p 并让我惊讶地发现:
[devops@dp01app5030 SeGrid]$ ps -p 20416
  PID TTY          TIME CMD
20416 ?        00:00:19 ntpd

一个真正的WTF时刻。所以我将问题与谷歌配对并发现了这个:
然后发现这个https://github.com/docker/for-linux/issues/124

结果我不得不重新启动 ntp 守护进程并解决了这个问题!!!

关于docker - 驱动程序 "devicemapper"在容器中的进程被杀死后无法删除根文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45709068/

相关文章:

docker - 根据联合文件系统,图像实际上包含另一个图像吗?

centos - 如何告诉 Docker 为卷使用 dm/LVM 后端而不是 vfs

docker - 为什么 docker 镜像会占用我未使用的磁盘空间

Docker 列表容器 - Gitlab Runner

mysql - 容器没有使用提到的 dockerfile 构建 - 多个容器

azure - 通过 SSH 连接到 DC/OS 创建的公共(public)代理节点以部署 Docker 容器?

bash - cron 作业中提供的条件返回 "No such file or directory"

docker - 使用Debian:Buster的Docker为Turtle bot 3安装ROS模拟的最佳方法

tomcat - OpenShift 迁移 - 如何处理 .openshift 文件夹?

linux - Redhat 没有可用的软件包