Логи, мониторинг и освобождение ресурсов

Теперь поговорим о сервисных командах, таких как просмотр логов, мониторинг ресурсов, которые потребляют запущенные контейнеры и команды для удаления ненужного мусора.

Просмотр логов

Любое приложение пишет в специальный журнал всё, что что с ним происходит. Такой журнал называется лог-файл. В логах могут быть записаны все запросы к приложению (успешные и отклонённые), сообщения об ошибках и прочее. Часто возникает необходимость посмотреть лог-файлы — например, нужно найти время обращения к приложению с определенного IP-адреса или узнать, с какого IP бомбардируют приложение автоматическими запросами.
Посмотреть логи можно и в докер-контейнере.
Запустите какой-нибудь образ, откройте новую вкладку в терминале и выполните команду:
Скопировать кодBASH
docker logs --follow <container_name>
image
Теперь можно сохранить логи в файл командой docker logs <container_name> > docker.log или найти в логах необходимую информацию: grep <поисковый-запрос>.

Мониторинг запущенных контейнеров

Всегда полезно знать, какие контейнеры сейчас запущены и сколько ресурсов они потребляют. Для этого есть специальная команда:
Скопировать кодBASH
docker stats
image
Нажмите Ctrl+C или Command+C чтобы выйти из режима просмотра.

Освобождение ресурсов

Чем дольше вы будете работать с докером, тем больше будет копиться скачанных образов, забытых остановленных контейнеров и прочего мусора. Если своевременно не наводить порядок, то место на диске закончится в самый неподходящий момент, это лишь вопрос времени.
image
Выполните следующую команду:
Скопировать кодBASH
docker system df
Команда покажет, сколько места на диске занимают образы, контейнеры, тома и билд-кеш. Будет и информация о том, сколько места можно освободить, удалив ненужное.
Удалить все неактивные (остановленные) контейнеры можно командой docker container prune.
Можно удалить ненужные образы (те, что использовались в качестве промежуточных для сборки других образов, но на которые теперь не ссылается ни один контейнер, их называют dangling images): docker image prune.
Удалить вообще всё, что не используется (неиспользуемые образы, остановленные контейнеры, тома, которые не использует ни один контейнер, билд-кеш), можно командой docker system prune:
Скопировать кодBASH
$ docker system prune WARNING! This will remove: - all stopped containers - all networks not used by at least one container - all dangling images - all dangling build cache Are you sure you want to continue? [y/N]
На диске освободится много места. Не забывайте время от времени проверять ресурсы, которые использует Docker.