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