Чи є спосіб побачити журнал контейнера, який вийшов?
Я можу отримати ідентифікатор контейнера вийшов контейнера за допомогою, docker ps -a
але я хочу знати, що сталося, коли він працював.
Чи є спосіб побачити журнал контейнера, який вийшов?
Я можу отримати ідентифікатор контейнера вийшов контейнера за допомогою, 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"
Ім'я стека вказується на початку команди.
docker logs --tail=50 <container id>
для останніх п’ятдесяти рядків - корисно, коли ваш контейнер працює тривалий час.
Для безпосереднього перегляду журналу журналу вийшов контейнера в менше, прокрученому до кінця файлу, я використовую:
docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less +G
запустити як ./viewLogs.sh КОНТЕЙНЕР
Цей метод має перевагу перед docker logs
підходами на основі того, що файл відкривається безпосередньо, а не потоково.
sudo необхідний, оскільки LogPath / Файл зазвичай знаходиться у власності root