Как просмотреть выход журнала с помощью запуска docker-compose?

Когда я использую docker-compose up, я могу видеть журналы для всех контейнеров в моем файле docker-compose.yml.

Однако, когда я использую docker-compose run app, я вижу только вывод консоли для app, но ни одна из служб, от которой зависит app. Как просмотреть выходные данные журнала для других служб?

Ответ 1

Обновление 1 июля 2019 года

docker-compose logs <name-of-service>

Из документации:

Usage: logs [options] [SERVICE...]

Options:

--no-color Создать монохромный вывод.

-f, - -f ollow Следить за выводом журнала.

-t, --timestamps Show timestamps.

--tail = "all" Количество строк, отображаемых в конце журналов                     для каждого контейнера.

Просмотреть журналы докера

Вы можете запустить Docker compose в отдельном режиме и позже присоединиться к журналам всего контейнера. Завершив просмотр журналов, вы можете отсоединиться от вывода журналов , не закрывая свои службы.

  1. Используйте docker-compose up -d, чтобы запустить все службы в отдельном режиме (-d) (вы не увидите журналы в отдельном режиме)
  2. Используйте docker-compose logs -f -t, чтобы присоединить себя к журналам всех запущенных служб, тогда как -f означает, что вы следите за выводом журнала, а опция -t дает вам метки времени (см. Ссылка на докер)
  3. Используйте Ctrl + z или Ctrl + c, чтобы отсоединить себя от выхода журнала , не закрывая работающие контейнеры

Если вас интересуют журналы одного контейнера, вы можете использовать ключевое слово docker:

  1. Используйте docker logs -t -f <name-of-service>

Сохранить вывод

Чтобы сохранить вывод в файл, добавьте в команду logs следующее:

  1. docker-compose logs -f -t >> myDockerCompose.log

Ответ 2

Если вы хотите видеть выходные журналы из всех контейнеров или служб в вашем терминале.

docker-compose logs -t -f --tail <no of lines> 

Например.:  Допустим, вы хотите регистрировать вывод последних 5 строк из всех служб

docker-compose logs -t -f --tail 5

Если вы хотите записать вывод из определенных контейнеров, это можно сделать следующим образом:

docker-compose logs -t -f --tail <no of lines> <containerid1> <containerid2> ...<containeridn><name-of-service1>...<name-of-service N>

Usage:

Например. скажем, у вас есть контейнер API и контейнер портала, то вы можете сделать что-то вроде ниже:

docker-compose logs -t -f --tail 5 portal api xyz

Где 5 представляет последние 5 строк из обоих журналов.

Ref: https://docs.docker.com/v17.09/engine/admin/logging/view_container_logs/

Ответ 3

  1. используйте команду для запуска контейнеров в отдельном режиме: docker-compose up -d
  2. для просмотра контейнеров используйте: docker ps
  3. просмотреть журналы для контейнера: docker logs <containerid>