我的 PHP 容器运行 puppeteer 来生成 PDF。通过生成 PDF 文档,它还在我的容器内创建了两个核心转储文件。我不确定它们实际上来自哪里。
主机/服务器是 CentOS 7。
我检查了以下内容:
/var/log/messages
中未找到错误日志(例如 segfault) 我试图禁用核心转储
按照 https://linux-audit.com/understand-and-configure-core-dumps-work-on-linux/ 的禁用核心转储部分, 我弄完了:
/etc/security/limits.conf
* soft core 0
* hard core 0
echo “ulimit -c 0 > /dev/null 2>&1” > /etc/profile.d/disable-coredumps.sh
创建了 disable-core-dumps.sh /etc/systemd/coredump.conf
添加了以下内容[Coredump]
Storage=none
ProcessSizeMax=0
ulimit -c 0
容器内( Alpine )上面的技巧都不适合我。每次 puppeteer 生成 PDF 时,它总是会创建两个核心转储文件,如下所示:
core.131 core.52
核心文件如下所示:
谁能帮我禁用核心转储?非常感谢。
最佳答案
您必须使用选项 --ulimit core=0
启动您的容器。禁用核心转储。
引用:https://docs.docker.com/engine/reference/commandline/run/#set-ulimits-in-container---ulimit
例子
在主机上,将 coredump 路径临时设置为 /tmp
验证:
echo '/tmp/core.%e.%p' | sudo tee /proc/sys/kernel/core_pattern
像往常一样启动一个容器并强制进行核心转储:
docker run --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(shows core.yes.<pid>)
现在,使用
--ulimit core=0
:docker run --ulimit core=0 --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(No entries)
关于docker - 如何在 docker 容器中禁用核心文件转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58704192/