Показать страницуИстория страницыСсылки сюдаНаверх Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. # Удалить все остановленные контейнеры, неиспользуемые образы и сети\\ docker system prune -a # Если нужна более агрессивная очистка, также удалить тома\\ docker system prune -a --volumes # Проверить использование диска Docker\\ docker system df ====== Освобождение места на диске для Docker сборки ====== ===== Проблема ===== При сборке Docker образов возникает ошибка: <code> write /usr/lib/llvm18/bin/llvm-exegesis: no space left on device ERROR: Service 'base' failed to build : Build failed </code> **Причина:** Недостаточно свободного места на диске для завершения сборки образа. ===== Диагностика ===== ==== Проверьте свободное место ==== <code> # Общее место на диске df -h # Место занимаемое Docker docker system df </code> **Критические значения:** * Менее 2GB свободного места - высокий риск ошибок сборки * Менее 5GB - рекомендуется очистка перед сборкой больших образов ===== Основная очистка Docker ===== ==== Полная очистка неиспользуемых данных ==== <code> # Удалите все неиспользуемые Docker данные (ВНИМАНИЕ: удалит все остановленные контейнеры) docker system prune -a --volumes </code> **Что удаляется:** * Все остановленные контейнеры * Все неиспользуемые сети * Все неиспользуемые образы * Все неиспользуемые тома * Весь build cache ==== Выборочная очистка ==== <code> # Удалите старые образы docker image prune -a # Удалите остановленные контейнеры docker container prune # Удалите неиспользуемые тома docker volume prune # Удалите неиспользуемые сети docker network prune </code> ===== Дополнительная очистка системы ===== ==== Системные логи ==== <code> # Очистите системные логи (Ubuntu/Debian) sudo journalctl --vacuum-time=7d # Или ограничьте размер логов sudo journalctl --vacuum-size=500M </code> ==== Пакетный кэш ==== <code> # Ubuntu/Debian sudo apt clean sudo apt autoremove # CentOS/RHEL sudo yum clean all </code> ==== Поиск больших файлов ==== <code> # Найдите самые большие директории 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 </code> ===== Оптимизация Docker сборки ===== ==== Многоступенчатая сборка ==== Добавьте в Dockerfile для уменьшения размера образов: <file 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 </file> ==== .dockerignore ==== Создайте файл `.dockerignore` для исключения ненужных файлов: <file> node_modules .git *.log tmp .cache </file> ===== Проверка результата ===== После очистки проверьте освобожденное место: <code> # Проверьте общее место df -h # Проверьте место Docker docker system df # Проверьте конкретную директорию Docker sudo du -sh /var/lib/docker </code> ===== Экстренные меры ===== ==== Если места критически мало ==== <code> # Остановите все контейнеры docker stop $(docker ps -aq) # Удалите все контейнеры docker rm $(docker ps -aq) # Удалите все образы docker rmi $(docker images -q) # Полная очистка docker system prune -a --volumes --force </code> **ВНИМАНИЕ:** Эти команды удалят все Docker данные. Используйте только в критических случаях. ==== Временное использование другого диска ==== <code> # Переместите 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 </code> ===== Предотвращение проблем ===== ==== Автоматическая очистка ==== Добавьте в crontab регулярную очистку: <code> # Редактировать crontab sudo crontab -e # Добавить строку для еженедельной очистки 0 2 * * 0 docker system prune -f </code> ==== Мониторинг места ==== <code> # Создайте скрипт мониторинга #!/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 </code> ===== Рекомендации ===== * **Минимум свободного места:** 10GB для комфортной сборки больших образов * **Регулярная очистка:** раз в неделю выполняйте `docker system prune` * **Мониторинг:** следите за ростом `/var/lib/docker` * **Оптимизация:** используйте многоступенчатую сборку и `.dockerignore` vm/ubuntu/01-ubuntu_clin.txt Последнее изменение: 2025/08/29 23:19 — admin