The book of Magnus

IT-заметки и знания

Docker. Глава четвёртая

Tags = [ DevSecOps, Docker ]

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

В Docker есть команды, которые позволяют облегчить различные задачи, например:

  • Просмотр версии Docker;
  • Просмотр информации о сервере;
  • Загрузка обновлений образов;
  • Изучение контейнеров;
  • Вход в работающий контейнер;
  • Возврат результатов;
  • Просмотр журналов;
  • Мониторинг статистики и т.д.

Просмотр версии Docker

docker version

Версии компонентов могут различаться

Информация о сервере

docker system info

Выведется информация об образах, контейнерах, плагинах и т.д. По умолчанию файл конфигурации Docker содержится в файле /etc/docker/daemon.json. Для большинства аргументов, которые передаются в dockerd здесь можно задать постоянные значения.

Загрузка обновлений образов

docker image pull ubuntu:latest 

Docker не будет автоматически обновлять локальный образ.

Изучение контейнера

docker container inspect

Выдаёт подробный вывод о контейнере.

Изучение командной оболочки

docker container run -it ubuntu:latest /bin/bash

Если после запуска мы посмотрим на запущенные процессы, то увидим только bash. Это происходит потому, что в контейнере ничего не запускается автоматически.

Возврат результата

docker container run ubuntu:latest /bin/cat /etc/passwd

В ответ мы получим содержимое файла /etc/passwd. Символ | в контейнер не передаётся. Если нужно выполнить пайп именно в контейнере, то нужно передавать строку для выполнения совместно с /bin/bash.

Что происходит в контейнере

Exec

docker contanter exec -ti ... /bin/bash

Данной командой мы откроем TTY в контейнере и перейдём в него.

Volume

docker volume ls

Позволяет посмотреть список томов, которые были созданы самим Docker через docker volume create my-data.

docker volume rm

Позволяет удалить том, если он больше не нужен.

Журналирование

docker container logs

Позволяет вывести логи из контейнера. Файлы из этого журнала хранятся в /var/lib/docker/containers/id/. Чтобы не смотреть логи локально можно настроить их отправку во внешние системы с помощью настроек файла daemon.json.

Мониторинг

stats

docker container stats

Выведет динамический срез информации о работе контейнера с информацией:

  • Имя контейнера;
  • Потребление ресурсов ЦПУ, где 100% - одно ядро;
  • ОЗУ;
  • Сеть, Docker перенаправляет трафик на порты контейнера даже если они ещё не запущены. Также данную информацию можно получить через API /stats

events

docker system events

Показывает все события, которые происходят в Docker.

cAdvisor

Инструмент от компании Google, который сам ставится через Docker и позволяет следить за другими контейнерами на порту 8080. Также метрики с него можно отгружать в Prometheus