如何在docker容器中禁用核心文件转储
我的PHP容器运行Puppeter生成PDF。通过生成PDF文档,它还可以在容器中创建两个核心转储文件。我不确定它们究竟来自哪里 主机/服务器是CentOS 7 我检查了以下内容:如何在docker容器中禁用核心文件转储,docker,docker-compose,puppeteer,alpine,coredump,Docker,Docker Compose,Puppeteer,Alpine,Coredump,我的PHP容器运行Puppeter生成PDF。通过生成PDF文档,它还可以在容器中创建两个核心转储文件。我不确定它们究竟来自哪里 主机/服务器是CentOS 7 我检查了以下内容: 没有应用程序错误日志,Browsershot/Puppeter正在运行,没有错误 在/var/log/messages 我已尝试禁用核心转储 通过执行中的“禁用核心转储”部分,我完成了以下工作: 将以下内容添加到/etc/security/limits.conf 创建了一个disable-core-dumps.sh,
/var/log/messages
/etc/security/limits.conf
echo“ulimit-c0>/dev/null 2>&1”>/etc/profile.d/disable-coredumps.sh
/etc/systemd/coredump.conf
ulimit-c0
(alpine)core.131 core.52
核心文件如下所示:
有人能帮我禁用核心转储吗?非常感谢。您必须使用选项
--ulimit core=0
启动容器以禁用coredumps
参考:
例子
在主机上,临时将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>)
我在docker swarm服务中也遇到了这个问题,并且--ulimit core=0在swarm服务中不起作用,我在下面的命令中使用过,并在docker swarm服务中为我工作过
sysctl-w kernel.core_pattern=/dev/null对于那些使用docker compose的人,在
.yml
文件集中ulimits
:
services:
app:
ulimits:
core:
hard: 0
soft: 0
我认为您需要禁用主机上的核心转储,而不是容器,或者像以前一样运行容器one@LinPy我已经通过以下操作禁用了主机上的核心转储。已尝试在主机和容器上禁用核心转储。如果你想找到这些核心转储的根本原因,而不是让它们失效,那么我建议你多看看木偶演员。由于puppeter使用nodejs,并且coredump中有nodejs模块/lib,因此看起来像是一个有故障的nodejs进程。有一些调试选项可以使用,比如禁用Puppeter的headless模式,或者启用详细日志记录。以下是有关详细信息的链接:。请尝试编辑/etc/security/limits.conf/etc/systemd/coredump.conf insitde容器,例如在描述如何构建image@ahasbini奇怪的是PDF是完美生成的。我启用了调试,但找不到任何有用的东西。只是核心转储。谢谢你的回答。我正在使用compose,并通过将soft和hard设置为0来尝试ulimit配置。但仍然不起作用。docker run-ulimit core=0是否与将compose的ulimit设置为0相同?我认为应该在启动php应用程序的同一命令中将其添加到
entrypoint.sh
docker run --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(shows core.yes.<pid>)
docker run --ulimit core=0 --rm -it bash
(inside the container)
# yes > /dev/null &
# kill -SIGABRT $(pidof yes)
# ls /tmp
(No entries)
services:
app:
ulimits:
core:
hard: 0
soft: 0