Докер переглядає журнал вийшов контейнера


102

Чи є спосіб побачити журнал контейнера, який вийшов?

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


Відповіді:


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
Для стека докера, де він перезапускається кожні кілька секунд: 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

17

docker logs --tail=50 <container id> для останніх п’ятдесяти рядків - корисно, коли ваш контейнер працює тривалий час.


1
@Whitefret, я оновив відповідь вашою пропозицією. Оригінальна відповідь затягнула б цілий журнал і склала його локально, зайняла б дуже багато часу з великим журналом і повільною мережею
Метью

У менеджері сповіщень я бачу багато таких повідомлень, але не впевнений, чи пов’язані вони з попередженням:
Arnav Bose

10

Ви можете використовувати команду нижче, щоб скопіювати журнали навіть із закритого контейнера:

docker cp container_name :path_of_file_in_container destination_path_locally

Наприклад:

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

6

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

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

запустити як ./viewLogs.sh КОНТЕЙНЕР

Цей метод має перевагу перед docker logsпідходами на основі того, що файл відкривається безпосередньо, а не потоково.

sudo необхідний, оскільки LogPath / Файл зазвичай знаходиться у власності root

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.