В мире докеров можно легко увидеть журналы для контейнера докеров (т.е. Запущенного изображения). Но при создании образа обычно вызывается несколько команд. Например, команды 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>
Есть и другие варианты с журналами здесь.