Докер просматривает журнал выходящего контейнера

Есть ли способ увидеть журнал выходящего контейнера?

Я могу получить идентификатор контейнера из закрытого контейнера с помощью docker ps -a но я хочу знать, что произошло, когда оно было запущено.

Ответ 1

Используйте 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

Ответ 2

docker logs --tail=50 <container id> для последних пятидесяти строк - полезно, когда ваш контейнер работает в течение длительного времени.

Ответ 3

Чтобы напрямую просмотреть файл журнала из выведенного контейнера меньше, прокручивается до конца файла, я использую:

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

запустить как. /viewLogs.sh CONTAINERNAME

Этот метод имеет преимущество над подходами на основе docker logs, что файл открывается напрямую, а не потоковым.

sudo необходимо, так как LogPath/File обычно находится под управлением root

Ответ 4

Вы можете использовать команду ниже для копирования журналов даже из выходящего контейнера:

docker cp имя_контейна : path_of_file_in_container destination_path_locally

Например:

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