Dockerコンテナーでコアファイルダンプを無効にする方法


13

私のPHPコンテナーはpuppeteerを実行してPDFを生成します。PDFドキュメントを生成することで、コンテナ内に2つのコアダンプファイルも作成されます。実際にどこから来たのかわかりません。

ホスト/サーバーはCentOS 7です。

私は以下をチェックしました:

  1. アプリケーションエラーログはありません。Browsershot/ puppeteerはエラーなしで実行されています。
  2. エラーログ(segfaultなど)が見つかりません /var/log/messages

コアダンプを無効にしようとしました

https://linux-audit.com/understand-and-configure-core-dumps-work-on-linux/の Disable core dumpsセクションに従って、私は完了しました:

  1. 次のコンテンツをに追加しています /etc/security/limits.conf
* soft core 0
* hard core 0
  1. 以下によってdisable-core-dumps.shを作成しました。 echo “ulimit -c 0 > /dev/null 2>&1” > /etc/profile.d/disable-coredumps.sh

  2. に次のコンテンツを追加しました /etc/systemd/coredump.conf

[Coredump]

Storage=none
ProcessSizeMax=0
  1. そして、サーバーとコンテナを再起動します

  2. ulimit -c 0コンテナ(アルパイン)の内側にもセットしてみました

上記のトリックはどれも私にはうまくいきません。人形遣いがPDFを生成するたびに、常に次のような2つのコアダンプファイルが作成されます。

core.131 core.52

コアファイルは次のようになります。

コアダンプファイルの内容

誰かがコアダンプを無効にするのを手伝ってくれる?どうもありがとう。


コンテナーではなくホストのコアダンプを無効にするか、コンテナーを特権のあるコンテナーとして実行する必要があると思います
LinPy

@LinPy私はすでに、次のことで、ホスト上のコア・ダンプを無効にしてきました linux-audit.com/...を。ホストとコンテナの両方でコアダンプを無効にしようとしました。それらのどれも動作しません。
ジョナサン

これらのコアダンプを無効にするのではなく、根本的な原因を見つけたい場合は、操り人形師にもっと調べることをお勧めします。puppeteerはnodejsを使用し、コアダンプにはnodejsモジュール/ライブラリが含まれているため、障害が発生したnodejsプロセスのようです。puppeteerのヘッドレスモードを無効にして詳細ログを有効にするなど、使用できるいくつかのデバッグオプションがあります。詳細については、こちらのリンクをご覧ください:github.com/puppeteer/puppeteer#debugging-tips
ahasbini

/etc/security/limits.conf /etc/systemd/coredump.conf
insitdeコンテナー

@ahasbini奇妙なことに、PDFは完全に生成されます。デバッグを有効にしましたが、有用なものを見つけることができませんでした。コアダンプのみ。
ジョナサン

回答:


3

--ulimit core=0コアダンプを無効にするオプションを使用してコンテナーを起動する必要があります。

リファレンス:https : //docs.docker.com/engine/reference/commandline/run/#set-ulimits-in-container---ulimit

ホストで、/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)

答えてくれてありがとう。私はcomposeを使用していて、softとhardを0に設定してulimit構成を試しましたが、それでも機能しません。docker run —ulimit core = 0はcomposeのulimitを0に設定することと同じですか?
ジョナサン

entrypoint.sh
PHP

2

docker swarmサービスでもこの問題が発生し、swarmサービスで--ulimit core = 0が機能しません。以下のコマンドを使用して、docker swarmサービスで機能しました!

sysctl -w kernel.core_pattern = / dev / null


ありがとう!これもトリックです。
ジョナサン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.