# Удалить все остановленные контейнеры, неиспользуемые образы и сети\\
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`