Как автоматически удалить контейнер Docker при сохранении журналов?

#docker

#docker

Вопрос:

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

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

Однако --rm появляется опция для удаления журналов контейнера вместе с контейнером.

Ответ №1:

Войдите куда-нибудь за пределы контейнера.

  1. Вы можете смонтировать каталог хоста в своем контейнере, чтобы журналы записывались в каталог хоста и сохранялись после rm.

  2. Или вы можете смонтировать том в своем контейнере; который будет сохранен после rm

  3. Или вы можете настроить rsyslog — или какой-либо аналогичный агент сбора журналов — для экспорта ваших журналов в удаленную службу. См . https://www.simulmedia.com/blog/2016/02/19/centralized-docker-logging-with-rsyslog / подробнее об этом решении.

Первые 2 являются взломами, но их легче запустить и запустить на вашей рабочей станции / сервере. Если все это размещено в облаке, может быть неплохой вариант выгрузки журнала (Cloudwatch на AWS), который избавит вас от необходимости настраивать rsyslog