gpt4 book ai didi

docker - Centos docker 容器因 6 段错误而崩溃 - 核心转储在哪里

转载 作者:行者123 更新时间:2023-12-04 19:34:23 25 4
gpt4 key购买 nike

运行 Centos 7.1.1503 docker 容器,当添加几行代码(node.js)时,它会因错误而崩溃:

/bin/sh: line 1:     6 Segmentation fault      (core dumped) node --inspect server.js 

文件 /proc/sys/kernel/core_pattern包含以下内容:
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e

容器内没有/var/spool/abrt 目录。运行容器的服务器上的/var/spool/abrt 目录没有得到任何东西。
由于只读 fs 的原因,我无法将/proc/sys/kernel/core_pattern 更改为指向另一个目录/程序。也不能以特权运行容器:-(

我已经阅读了大量的 docker/stackexchange 和其他文档,但无法弄清楚在哪里/如何获取核心转储?

在过去,我会玩设置并破坏机器的副本,但这是一个生产容器,我能做什么以及何时/多少次崩溃它非常有限:-(

主机是 RHEL 7.1,docker 版本是 1.7

编辑:在我的笔记本电脑上,运行相同的容器(虽然使用 docker 1.12),我有时会得到核心转储 在主机上/var/spool/abrt 通过运行 sleep 60 & 在容器中,然后运行(仍在容器中)kill -ABRT <pid of the sleep 60> . “有时”我的意思是再次尝试并不总是有效......我不确定为什么,但大约三分之二的尝试成功。我认为这可能与特权运行或其他什么有关..?我使用 docker run -it centos bash 运行容器.如果我能理解这一点,我可能会在生产环境中复制这种行为。

最佳答案

执行以下命令,获取您可能已启动的所有 centos 容器的文件系统上层路径的报告:
docker ps -a | grep centos | awk '{print $1}' | xargs docker inspect | grep UpperDir | cut -d\" -f4
请记住,您必须成为 sudo 才能访问它们(在 cd'ing 之前运行 sudo su)

上面的命令执行以下操作:

  • 获取主机中存在的所有容器的报告
  • 只选择那些在他们的行中有 centos 的
  • 获取该报告的第一行(容器 ID)
  • 检查每一个容器
  • 查找 UpperDir 参数(容器文件系统的上层,以及您在进程崩溃时修补的那个)
  • 剪切 UpperDir 字符串以改进演示

  • 在那之后,你就靠自己了。恐怕我对坠机本身没有帮助。但是,如果您仍然怀疑,请给我写几行,我会尽力提供帮助。

    我希望这可以帮助你!

    关于docker - Centos docker 容器因 6 段错误而崩溃 - 核心转储在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43167128/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com