Dockerは、終了したコンテナーのログを確認します


回答:


105

を使用し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

4
数秒ごとに再起動するDockerスタックの場合: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"スタック名はコマンドの先頭で指定されます。
x-yuri 2018

17

docker logs --tail=50 <container id> 最後の50行-コンテナが長期間実行されている場合に役立ちます。


1
@Whitefret、私はあなたの提案で答えを更新しました。元の答えは、ログ全体をプルダウンしてローカルで
Matthew

警告マネージャでは、私は、これらのメッセージの多くを参照してくださいではなく、必ずこれらは、アラートに関連している場合:
Arnavボーズ

10

以下のコマンドを使用して、終了したコンテナからでもログをコピーできます。

docker cp container_name :path_of_file_in_container destination_path_locally

例えば:

docker cp sravya:/tmp/report /root/mylog

6

終了したコンテナのログファイルをlessで直接表示し、ファイルの最後までスクロールするには、次を使用します。

docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less +G

./viewLogs.shCONTAINERNAMEとして実行

この方法には、docker logsファイルをストリーミングするのではなく直接開くという、ベースのアプローチよりも優れた利点があります。

LogPath / Fileは通常ルート所有であるため、sudoが必要です。

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