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

问题描述 投票:3回答:1

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

/ bin / bash:第1行:40个已杀死的python -u scripts / server.py start go

我希望容器退出并由docker重新启动。然而,码头工具永远不会退出。如果我手动执行,我会收到以下错误:

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

谷歌搜索后,我尝试了一堆东西:

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

所有结果都是设备忙。现在唯一的补救措施是重启主机系统,这显然不是一个长期的解决方案。

有任何想法吗?

docker redhat device-mapper
1个回答
3
投票

我有同样的问题,解决方案是一个真正的惊喜。

所以这是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守护进程并修复了这个问题!

© www.soinside.com 2019 - 2024. All rights reserved.