docker - 如何在 docker 容器中禁用核心文件转储

标签 docker docker-compose puppeteer alpine coredump

我的 PHP 容器运行 puppeteer 来生成 PDF。通过生成 PDF 文档,它还在我的容器内创建了两个核心转储文件。我不确定它们实际上来自哪里。

主机/服务器是 CentOS 7。

我检查了以下内容:

  • 没有应用程序错误日志,Browsershot/puppeteer 运行时没有错误。
  • /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
    

    核心文件如下所示:

    Core dump file content

    谁能帮我禁用核心转储?非常感谢。

    最佳答案

    您必须使用选项 --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/

    相关文章:

    macos - 适用于 Mac 和 VMWare Fusion 的 Docker

    javascript - Puppeteer - domcontentloaded 事件触发问题

    node.js - 从 Crontab 运行时的 Puppeteer "TimeoutError: Navigation Timeout Exceeded: 30000ms exceeded"

    java - 无法将 dockerized spring boot 应用程序连接到 dockerized postgresql

    javascript - Puppeteer:搜索不区分大小写的内部文本

    macos - 如何从本地 Kubernetes 连接到本地机器上的数据库

    Docker 组成远程绝对卷

    amazon-web-services - 即使运行Docker容器也无法访问AWS EC2实例

    docker - 如何从docker-compose中的容器访问localhost应用

    linux - 我的容器找不到 package.json 来在 docker-compose 上执行 npm install