Отлично, вот вы запустили контейнер и дошли до того, что необходимо проверить, что там вообще происходит внутри этого самого контейнера.
Для начала я запущу пару контейнеров, чтобы было над чем экспериментировать.
docker run --detach --name some-mariadb -e MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest
docker run --detach --name some-nginx nginx:latest
Первая команда запускает контейнер с базой MariaDB и назначает пароль пользователю root (my-secret-pw).
Для того, чтобы узнать, какие переменные окружения для чего используются, можно перейти на страницу образа в Docker Hub и почитать о нём немного, например.
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bdc2d2440db9 nginx:latest "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 80/tcp some-nginx
ca55f6abaa03 mariadb:latest "docker-entrypoint.s…" 23 minutes ago Up 23 minutes 3306/tcp some-mariadb
docker container top (docker top)
Выполняя docker container top можно проверить запущенные процессы внутри контейнера, по аналогии с top в самой ОС.
docker container top some-nginx
UID PID PPID C STIME TTY TIME CMD
root 1950294 1950274 0 16:49 ? 00:00:00 nginx: master process nginx -g daemon off;
101 1950338 1950294 0 16:49 ? 00:00:00 nginx: worker process
Логично, что в контейнере с Nginx запущены процессы с именем nginx. Теперь выполним то же самое для контейнера с MariaDB.
docker container top some-mariadb
UID PID PPID C STIME TTY TIME CMD
systemd+ 1950081 1950063 0 16:31 ? 00:00:00 mariadbd
- UID — пользователь, от имени которого запущен процесс внутри контейнера;
- PID — PID процесса в хостовой системе (тот, что виден в
ps auxна хосте); - PPID — родительский процесс (обычно
containerd-shim); - CMD — команда, запущенная внутри контейнера.
Тут довольно интересная графа PID. Дело в том, что в локальной системе, на которой установлен Docker, также создаётся процесс, как и в контейнере.
sudo ps -aux | grep mariadb
systemd+ 1950081 0.0 7.1 1093428 118860 ? Ssl 16:31 0:00 mariadbd
Также можно отфильтровать поля, которые хочется видеть в выводе.
docker container top some-mariadb -eo pid,ppid,cmd
PID PPID CMD
1950081 1950063 mariadbd
docker container inspect (docker inspect)
После того как контейнер создан, иногда бывает необходимо узнать о нём побольше — про его конфигурацию. Для этого используется команда docker container inspect. Команда docker container inspect — одна из самых полезных для диагностики и анализа контейнеров.
docker container inspect some-mariadb
Но вывод этой команды будет большим и поэтому показывать этот вывод тут не имеет никакого смысла. Она выводит всю внутреннюю информацию о контейнере в формате JSON. Стало быть можно использовать jq для парсинга вывода, но проще сразу использовать --format в самой команде.
Ниже оставлю наиболее популярные шаблоны docker inspect -fкоторые чаще всего используют DevOps-инженеры.
- Показать IP контейнера
docker inspect -f '{{ .NetworkSettings.IPAddress }}' some-mariadb
- Показать путь к логам
docker inspect -f '{{ .LogPath }}' some-mariadb - Показать порты, проброшенные на хост
docker inspect -f '{{ range .Mounts }}{{ .Source }} -> {{ .Destination }}{{ println }}{{ end }}' some-mariadb - Имя образа, из которого запущен контейнер
docker inspect -f '{{ .Config.Image }}' some-mariadb - Команда, с которой контейнер был запущен
docker inspect -f '{{ .Path }} {{ .Args }}' some-mariadb - Время запуска контейнера
docker inspect -f '{{ .State.StartedAt }}' some-mariadb - Текущий статус контейнера
docker inspect -f '{{ .State.Status }}' some-mariadb - Показать смонтированные каталоги
docker inspect -f '{{ range .Mounts }}{{ .Source }} -> {{ .Destination }}{{ println }}{{ end }}' some-mariadb
docker container stats
Теперь перейдём к мониторингу, к вещи о которой все обычно вспоминают когда что-то выполняется настолько долго что уже всем это надоело. Команда docker container stats — это мониторинг в реальном времени. Она показывает ресурсы, которые потребляют контейнеры.
docker stats some-mariadb
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
ca55f6abaa03 some-mariadb 0.00% 91.44MiB / 3.499GiB 2.55% 1.37kB / 0B 20MB / 53MB 9
- CONTAINER ID / NAME - Идентификатор или имя контейнера
- CPU % - Средняя загрузка CPU контейнера относительно всех яде
- MEM USAGE / LIMIT - Используемая и лимитированная память
- MEM % - Процент от лимита
- NET I/O - Сетевой ввод/вывод (RX / TX)
- BLOCK I/O - Дисковый ввод/вывод (чтение/запись на блочном уровне)
- PIDS - Количество процессов внутри контейнера
Можно также выполнить команду docker stats без указания контейнера чтобы получить статистику всех запущенных контейнеров.
Ниже оставлю наиболее популярные шаблоны docker inspect -f которые чаще всего используются.
- однократный вывод
docker stats --no-stream some-mariadb - красивое форматирование
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}" some-mariadb - только CPU и память всех контейнеров
docker stats --format "{{.Name}}: CPU {{.CPUPerc}} | MEM {{.MemUsage}}" - вывод в формате json
docker stats --no-stream --format "{{json .}}" some-mariadb
docker container logs
Ну и еще одна полезная команда docker container logs, которая покажет логи контейнера. Очень часто бывает так что контейнер не стартует после запуска, например если в качестве параметра не передать необходимые переменные.
docker container logs some-mariadb
2025-10-21 10:31:48 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
2025-10-21 10:31:48 0 [Note] Server socket created on IP: '::', port: '3306'.
2025-10-21 10:31:48 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
2025-10-21 10:31:48 0 [Note] mariadbd: ready for connections.
- Cледить за логами в реальном времени
docker container logs -f some-mariadb - Логи за последние 10 минут
docker container logs --since 10m some-mariadb - Последние 100 строк
docker container logs --tail 100 some-mariadb


Комментарии