終了したコンテナのログを確認する方法はありますか?
を使用して、終了したコンテナのコンテナIDを取得できますが、docker ps -a
実行中に何が起こったのか知りたいです。
回答:
を使用しdocker logs
ます。また、停止したコンテナーに対しても機能し、コンテナーのメインプロセスのSTDOUTおよびSTDERRストリーム全体をキャプチャします。
$ docker run -d --name test debian echo "Hello World"
02a279c37d5533ecde76976d7f9d1ca986b5e3ec03fac31a38e3dbed5ea65def
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
49daa9d41a24 debian "echo test" 2 minutes ago Exited (0) 2 minutes ago test
$ docker logs -t test
2016-04-16T15:47:58.988748693Z Hello World
stack=s1 && c=$(task_id=$(docker stack ps "$stack" --filter desired-state=shutdown | tail -n +2 | head -n 1 | awk '{print $1}') && docker inspect --format '{{.Status.ContainerStatus.ContainerID}}' "$task_id") && docker logs "$c"
スタック名はコマンドの先頭で指定されます。
終了したコンテナのログファイルをlessで直接表示し、ファイルの最後までスクロールするには、次を使用します。
docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less +G
./viewLogs.shCONTAINERNAMEとして実行
この方法には、docker logs
ファイルをストリーミングするのではなく直接開くという、ベースのアプローチよりも優れた利点があります。
LogPath / Fileは通常ルート所有であるため、sudoが必要です。