Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.
dead-container Linux / DevOps

Docker Error: unable to inspect container: dead container — Решение

Обновлено: 19.08.2026  ·  Официальная база знаний

Состояние Dead в жизненном цикле контейнера (containerd / runc)

Статус Dead означает фатальное состояние контейнера, при котором демон dockerd не может гарантировать корректность его файловой системы или сетевого окружения. Ошибка Error response from daemon: unable to inspect container: dead container или невозможность выполнить удаление docker rm возникает, когда процесс-прослойка (containerd-shim) аварийно завершился, точки монтирования OverlayFS/Volumes остались заблокированы ядром Linux (busy inode), либо демон Docker потерял дескриптор сетевого пространства имен.

Бизнес-риски:

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

Таблица состояний контейнера в рантайме Docker

Статус контейнераСостояние PID 1Состояние файловой системы / Netns
RunningАктивен в cgroupsВсе слои смонтированы, netns подключен к bridge.
ExitedЗавершен корректноПроцесс остановлен, точки монтирования освобождены.
DeadАварийно уничтожен / ЗависТочки монтирования заблокированы в ядре, ресурсы не освобождены.

Пошаговое принудительное удаление и освобождение ресурсов

Сценарий 1: Принудительное удаление контейнера через CLI

Попытайтесь выполнить каскадное принудительное удаление контейнера и его томов:

# Принудительное удаление мертвого контейнера (-f: force, -v: volumes)
docker rm -f -v <container_id_or_name>

# Массовое удаление всех контейнеров в статусе dead:
docker rm -v $(docker ps -a -q -f status=dead)

Сценарий 2: Поиск и размонтирование заблокированных точек (Unmount)

Если Docker не может удалить контейнер из-за ошибки device or resource busy:

# Поиск зависших точек монтирования overlay для конкретного контейнера
grep -E '/var/lib/docker/overlay2' /proc/mounts | grep <container_id>

# Принудительное ленивое размонтирование (Lazy Unmount)
umount -l /var/lib/docker/overlay2/<layer_id>/merged

# Повторная попытка удаления контейнера
docker rm -f <container_id>

Сценарий 3: Завершение зависших shim-процессов и перезапуск containerd

Если ядро удерживает shim-процесс в состоянии зомби (D state):

# Поиск висячих процессов containerd-shim
ps aux | grep containerd-shim | grep <container_id>

# Завершение процесса по PID
kill -9 <shim_pid>

# Перезапуск подсистем контейнеризации
systemctl restart containerd
systemctl restart docker

Типовые ошибки администраторов

  • Перезагрузка физического сервера 'reset': Принудительная перезагрузка ноды с зависшими дисковыми операциями может привести к повреждению всей структуры /var/lib/docker.
  • Попытка прямого удаления папок контейнера через rm -rf: Удаление каталога контейнера при смонтированном overlay приводит к удалению исходных файлов на хосте!
Docker-хосты регулярно накапливают мертвые контейнеры и утечки памяти?
ITSTM проведет глубокий аудит параметров ядра Linux, cgroups v2 и containerd, обеспечив стабильную работу инфраструктуры без ручных вмешательств.
Практический опыт инженера: Если контейнер зависает в статусе Dead с блокировкой NFS-тома, проверьте флаги монтирования NFS. Использование soft,timeo=50 вместо жесткого hard исключает зависание ядра в D-state при обрыве сети к СХД.

Частые вопросы (FAQ)

Можно ли запустить контейнер обратно из статуса Dead?

Нет. Статус Dead является терминальным. Контейнер можно только удалить и создать заново из исходного образа.

Почему контейнер переходит в статус Dead?

Основные причины: сбой дисковой подсистемы I/O, нехватка inodes, аварийное падение демона dockerd во время команды docker stop или зависание драйвера хранилища.

Сохраняются ли данные в Volume при переходе контейнера в статус Dead?

Да, именованные тома (Named Volumes) изолированы от жизненного цикла контейнера и остаются нетронутыми в /var/lib/docker/volumes/.

Как избежать появления Dead контейнеров при высокой нагрузке?

Используйте cgroups v2, настройте корректные лимиты памяти, используйте быстрые NVMe-накопители и переведите containerd на современный snapshotter.