Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

DOCKER_NO_SPACE_LEFT Linux / DevOps

Траблшутинг утечек диска в Docker: docker system prune и dangling layers

Обновлено: 21.08.2026
  • Ошибка no space left on device при создании новых контейнеров или сборке образов.
  • Каталог /var/lib/docker/overlay2 занимает сотни гигабайт дискового пространства.
  • Разрастание JSON-файлов логов контейнеров в каталоге /var/lib/docker/containers/.
  • Накопление неиспользуемых anonymous volumes и кэша Docker BuildKit.

1. Анализ потребления дискового пространства Docker

docker system df -v

2. Глубокая очистка неиспользуемых ресурсов

Удаление всех остановленных контейнеров, неиспользуемых сетей, висячих (dangling) слоев и кэша сборщика:

docker system prune -a --volumes -f

3. Ограничение размера логов в /etc/docker/daemon.json

Предотвратите бесконечное разрастание логов контейнеров, настроив ротацию драйвера json-file:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "3"
  }
}

Перезапустите демон:

systemctl restart docker

4. Автоматизированный скрипт очистки по расписанию

Создайте файл /etc/cron.weekly/docker-cleanup:

#!/usr/bin/env bash
set -euo pipefail
# Очистка образов старше 168 часов (7 дней) и dangling build cache
docker image prune -a --force --filter "until=168h"
docker builder prune -a --force --filter "until=168h"
docker volume prune -f
chmod +x /etc/cron.weekly/docker-cleanup
💡 Практика специалистов: Никогда не удаляйте папки внутри /var/lib/docker/overlay2 напрямую через rm -rf. Это необратимо повреждает локальную базу метаданных containerd/dockerd и потребует полной переустановки движка.

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

Почему после docker system prune размер папки /var/lib/docker/overlay2 не уменьшился?

Файлы overlay2 принадлежат работающим контейнерам. Если контейнер активно пишет временные файлы в свой root-слой вместо volume или tmpfs, место освободится только после его пересоздания.

Опасно ли выполнять команду docker volume prune?

Команда удаляет ВСЕ тома, которые в данный момент не примонтированы к работающим или остановленным контейнерам. Если у вас есть резервные отвязанные тома с базами данных, они будут стерты безвозвратно.

Полезные материалы
Рекомендуем