Ответ 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