実行中のコンテナの外部からメモリダンプを生成する方法

実行中のコンテナの外部からメモリダンプを生成する方法

コンテナ内で.netサービスを実行しています。コンテナ内では、このサービスのメモリ消費がコンテナに設定された制限まで徐々に増加し、しきい値制限に達した後にコンテナが終了することが観察されました。追加のデバッグのためにコンテナの外部にとどまり、コンテナの内部に.netサービスのメモリダンプを生成しようとしています。できますか?ポリシーで許可されていないため、サードパーティ製ソフトウェアをインストールしていません。

現在のホストの詳細は次のとおりです。

NAME="Ubuntu"
VERSION="16.04.6 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.6 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"

しかし、すでにUlimitホストコンピュータにインストールされています。 Ulimitを試してみましたが、成功しませんでした。

答え1

調べた結果、コンテナの外部でコンテナのコアスロットを作成またはGNU Debugger使用しました。gdb

  1. 「sudo docker ps -a | grep service_container_name」を使用してコンテナIDを取得します。
  2. "sudo dockerspect [コンテナID] | more"を使用して親PIDを取得する
  3. "pstree -pg [親プロセスpid]"サブプロセスPIDを取得する
  4. "sudo ps -aux | grep [サブプロセス pid]"
  5. 「sudo gcore PID」

関連情報