Как просмотреть журналы для изображения докеров?

В мире докеров можно легко увидеть журналы для контейнера докеров (т.е. Запущенного изображения). Но при создании образа обычно вызывается несколько команд. Например, команды npm install в проектах узлов. Было бы полезно просмотреть журналы для этих команд. Я быстро просмотрел документацию, но не нашел, как можно получить журналы для изображения докеров. Является ли это возможным?

Ответ 1

Самый простой способ - использовать tee для отправки копии всего вывода вашей команды в файл журнала. Если вы хотите, чтобы он был прикреплен к изображению, выведите команды запуска в файл журнала внутри изображения с чем-то вроде:

RUN my-install-cmd | tee /logs/my-install-cmd.log

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

docker run --rm my-image cat /logs/my-install-cmd.log

Если вам не нужны журналы, прикрепленные к изображению, вы можете записывать выходные данные каждой сборки с одним изменением в команду сборки (вместо большого количества изменений команд запуска) точно так же, как говорит JHarris:

docker build -t my-image . | tee my-image.build.log

Если вы создаете без использования --rm=true, то у вас есть все промежуточные контейнеры, и каждый из них имеет журнал, который вы можете просмотреть с помощью

docker logs $container_id

И, наконец, не забывайте об истории слоев на изображении. Они не показывают вывод каждой команды, но она полезна для всех тех команд, которые не регистрируют какой-либо вывод, и зная, какой сборку каждого слоя происходит, особенно когда используется большое количество кеширования.

docker history my-image

Ответ 2

Используйте это: https://github.com/jcalles/docker-wtee
Прочтите инструкции и, пожалуйста, дайте мне отзыв.
Или...
Если вам нужно получить журналы из запущенного контейнера, а в контейнере выставлены тома, запустите это:

docker run --rm -it --name testlogs --link <CONTAINERNAME/ID> --network CONTAINERNETWORK -p PORT:8080 --volumes-from CONTAINERNAME/ID  javiercalles/wtee sh

Ответ 3

Вы можете просмотреть логи в powershell с помощью этой команды

docker logs --details <containerId>

Есть и другие варианты с журналами здесь.