# Удалить все остановленные контейнеры, неиспользуемые образы и сети
docker system prune -a
# Если нужна более агрессивная очистка, также удалить тома
docker system prune -a –volumes
# Проверить использование диска Docker
docker system df
Освобождение места на диске для Docker сборки
Проблема
При сборке Docker образов возникает ошибка:
write /usr/lib/llvm18/bin/llvm-exegesis: no space left on device ERROR: Service 'base' failed to build : Build failed
Причина: Недостаточно свободного места на диске для завершения сборки образа.
Диагностика
Проверьте свободное место
# Общее место на диске df -h # Место занимаемое Docker docker system df
Критические значения: * Менее 2GB свободного места - высокий риск ошибок сборки * Менее 5GB - рекомендуется очистка перед сборкой больших образов
Основная очистка Docker
Полная очистка неиспользуемых данных
# Удалите все неиспользуемые Docker данные (ВНИМАНИЕ: удалит все остановленные контейнеры) docker system prune -a --volumes
Что удаляется: * Все остановленные контейнеры * Все неиспользуемые сети * Все неиспользуемые образы * Все неиспользуемые тома * Весь build cache
Выборочная очистка
# Удалите старые образы docker image prune -a # Удалите остановленные контейнеры docker container prune # Удалите неиспользуемые тома docker volume prune # Удалите неиспользуемые сети docker network prune
Дополнительная очистка системы
Системные логи
# Очистите системные логи (Ubuntu/Debian) sudo journalctl --vacuum-time=7d # Или ограничьте размер логов sudo journalctl --vacuum-size=500M
Пакетный кэш
# Ubuntu/Debian sudo apt clean sudo apt autoremove # CentOS/RHEL sudo yum clean all
Поиск больших файлов
# Найдите самые большие директории sudo du -sh /* | sort -hr | head -10 # Найдите большие файлы логов sudo find /var/log -name "*.log" -size +100M -ls # Очистите Docker логи sudo truncate -s 0 /var/lib/docker/containers/*/*-json.log
Оптимизация Docker сборки
Многоступенчатая сборка
Добавьте в Dockerfile для уменьшения размера образов:
# В каждой RUN команде очищайте кэш пакетов
RUN apk update && apk add --no-cache \
build-base \
postgresql-dev \
git \
&& rm -rf /var/cache/apk/*
# Комбинируйте команды для уменьшения слоев
RUN command1 && \
command2 && \
command3 && \
cleanup_commands
.dockerignore
Создайте файл `.dockerignore` для исключения ненужных файлов:
node_modules .git *.log tmp .cache
Проверка результата
После очистки проверьте освобожденное место:
# Проверьте общее место df -h # Проверьте место Docker docker system df # Проверьте конкретную директорию Docker sudo du -sh /var/lib/docker
Экстренные меры
Если места критически мало
# Остановите все контейнеры docker stop $(docker ps -aq) # Удалите все контейнеры docker rm $(docker ps -aq) # Удалите все образы docker rmi $(docker images -q) # Полная очистка docker system prune -a --volumes --force
ВНИМАНИЕ: Эти команды удалят все Docker данные. Используйте только в критических случаях.
Временное использование другого диска
# Переместите Docker на другой диск sudo systemctl stop docker sudo mv /var/lib/docker /path/to/larger/disk/docker sudo ln -s /path/to/larger/disk/docker /var/lib/docker sudo systemctl start docker
Предотвращение проблем
Автоматическая очистка
Добавьте в crontab регулярную очистку:
# Редактировать crontab sudo crontab -e # Добавить строку для еженедельной очистки 0 2 * * 0 docker system prune -f
Мониторинг места
# Создайте скрипт мониторинга
#!/bin/bash
DISK_USAGE=$(df / | grep -vE '^Filesystem' | awk '{print $5}' | sed 's/%//')
if [ "$DISK_USAGE" -gt 85 ]; then
echo "WARNING: Disk usage is ${DISK_USAGE}%"
docker system prune -f
fi
Рекомендации
* Минимум свободного места: 10GB для комфортной сборки больших образов * Регулярная очистка: раз в неделю выполняйте `docker system prune` * Мониторинг: следите за ростом `/var/lib/docker` * Оптимизация: используйте многоступенчатую сборку и `.dockerignore`