1. ホーム
  2. docker

[解決済み] ドッカーコンテナが終了した理由を知るには?

2022-05-17 12:58:14

質問

1G RAM のホストで動作している Docker コンテナを持っています (同じホストで他のコンテナも動作しています)。この Docker コンテナ内のアプリケーションは、いくつかの画像をデコードし、メモリを大量に消費する可能性があります。

時折、このコンテナは終了します。私はそれがメモリ不足のためであることを疑いますが、あまり確かではありません。根本的な原因を見つけるための方法が必要です。そこで、このコンテナの死のために何が起こったかを知る方法はあるでしょうか?

どのように解決するのですか?

他の人が言っていた docker logs $container_id を使用してアプリケーションの出力を表示します。これは常に私が最初に確認することです。

次に docker inspect $container_id を実行して、状態の詳細を表示する、など。

    "State": {
        "Status": "exited",
        "Running": false,
        "Paused": false,
        "Restarting": false,
        "OOMKilled": false,
        "Dead": false,
        "Pid": 0,
        "ExitCode": 2,
        "Error": "",
        "StartedAt": "2016-06-28T21:26:53.477229071Z",
        "FinishedAt": "2016-06-28T21:26:53.478066987Z"
    },

ここで重要なのは "OOMKilled" という行で、これはコンテナのメモリ制限を超えた場合に真となり、Dockerはアプリを終了させることになります。また、終了コードを調べて、アプリが終了した原因が特定されているかどうかを確認することもできます。

注意: これは、docker 自体がプロセスを強制終了した場合のみを示し、コンテナにメモリ制限を設定したことを必要とします。docker 以外では、ホスト自身がメモリ不足になった場合、Linux カーネルがあなたのプロセスを停止させることができます。この場合、Linuxはしばしば/var/logにログを書き込みます。WindowsとMacのDocker Desktopでは、dockerの設定で組み込みLinux VMに割り当てるメモリを調整することができます。