オンプレミス・サーバーで発生したエラーを調査させていただく際、Dockerコンテナのログファイルの共有をお願いすることがあります。そこで、このノートでは共有をお願いすることの多い、サーバーあるいは、スケジューラーのDockerコンテナのログファイルの取得方法を紹介します。
まずサーバーのDocker コンテナIDを取得する必要があるため、docker ps
を実行します。
すると以下のような結果が出力されます。
出力結果から、IMAGE名が「exploratory」で始まり、COMMAND名が「./start.sh」の行を探します。
該当する行が見つかったら、その行のCONTAINER IDを確認してください。上記の例では、014cbe0146fc
がサーバーのDockerコンテナのIDとなります。
サーバーのログファイルは以下の場所にありますので、<サーバーのコンテナID>
をご利用のサーバーのコンテナIDに置き換えて、サーバーのログファイルを取得してください。
/var/lib/docker/containers/<サーバーのコンテナID>/<サーバーのコンテナID>-json.log
上記の例では、サーバーのログファイルは以下の場所に保存されていることになります。
/var/lib/docker/containers/014cbe0146fc/014cbe0146fc-json.log
スケジュールを実行した際のログファイルはサーバーのログファイルとは別で管理されています。
スケジューラーのログファイルを取得するには、スケジューラーのDocker コンテナIDを取得する必要があるため、docker ps
を実行します。
すると以下のような結果が出力されます。
出力結果から、IMAGE名が「scheduler」で始まり、COMMAND名が「./start.sh」の行を探します。このとき、COMMAND名が「./start_agendash.sh」というCOMMAND名と混同しないようにご注意ください。
該当する行が見つかったら、その行のCONTAINER IDを確認してください。上記の例では、b8891cd93acf
がスケジューラーのDockerコンテナのIDとなります。
サーバーのログファイルは以下の場所にありますので、<スケジューラーのコンテナID>
をご利用のスケジューラーのコンテナIDに置き換えて、スケジューラーのログファイルを取得してください。
/var/lib/docker/containers/<スケジューラーのコンテナID>/<スケジューラーのコンテナID>-json.log
上記の例では、サーバーのログファイルは以下の場所に保存されていることになります。
/var/lib/docker/containers/b8891cd93acf/b8891cd93acf-json.log