Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| vm:ubuntu:01-ubuntu_clin [2025/08/29 07:18] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | vm:ubuntu:01-ubuntu_clin [2025/08/29 23:19] (текущий) – admin | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | # Удалить все остановленные контейнеры, | ||
| + | docker system prune -a | ||
| + | # Если нужна более агрессивная очистка, | ||
| + | docker system prune -a --volumes | ||
| + | |||
| + | # Проверить использование диска Docker\\ | ||
| + | docker system df | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ====== Освобождение места на диске для Docker сборки ====== | ||
| + | |||
| + | ===== Проблема ===== | ||
| + | |||
| + | При сборке Docker образов возникает ошибка: | ||
| + | < | ||
| + | write / | ||
| + | ERROR: Service ' | ||
| + | </ | ||
| + | |||
| + | **Причина: | ||
| + | |||
| + | ===== Диагностика ===== | ||
| + | |||
| + | ==== Проверьте свободное место ==== | ||
| + | |||
| + | < | ||
| + | # Общее место на диске | ||
| + | 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/ | ||
| + | sudo journalctl --vacuum-time=7d | ||
| + | |||
| + | # Или ограничьте размер логов | ||
| + | sudo journalctl --vacuum-size=500M | ||
| + | </ | ||
| + | |||
| + | ==== Пакетный кэш ==== | ||
| + | |||
| + | < | ||
| + | # Ubuntu/ | ||
| + | sudo apt clean | ||
| + | sudo apt autoremove | ||
| + | |||
| + | # CentOS/RHEL | ||
| + | sudo yum clean all | ||
| + | </ | ||
| + | |||
| + | ==== Поиск больших файлов ==== | ||
| + | |||
| + | < | ||
| + | # Найдите самые большие директории | ||
| + | sudo du -sh /* | sort -hr | head -10 | ||
| + | |||
| + | # Найдите большие файлы логов | ||
| + | sudo find /var/log -name " | ||
| + | |||
| + | # Очистите Docker логи | ||
| + | sudo truncate -s 0 / | ||
| + | </ | ||
| + | |||
| + | ===== Оптимизация Docker сборки ===== | ||
| + | |||
| + | ==== Многоступенчатая сборка ==== | ||
| + | |||
| + | Добавьте в Dockerfile для уменьшения размера образов: | ||
| + | |||
| + | <file dockerfile> | ||
| + | # В каждой RUN команде очищайте кэш пакетов | ||
| + | RUN apk update && apk add --no-cache \ | ||
| + | build-base \ | ||
| + | postgresql-dev \ | ||
| + | git \ | ||
| + | && rm -rf / | ||
| + | |||
| + | # Комбинируйте команды для уменьшения слоев | ||
| + | RUN command1 && \ | ||
| + | command2 && \ | ||
| + | command3 && \ | ||
| + | cleanup_commands | ||
| + | </ | ||
| + | |||
| + | ==== .dockerignore ==== | ||
| + | |||
| + | Создайте файл `.dockerignore` для исключения ненужных файлов: | ||
| + | |||
| + | < | ||
| + | node_modules | ||
| + | .git | ||
| + | *.log | ||
| + | tmp | ||
| + | .cache | ||
| + | </ | ||
| + | |||
| + | ===== Проверка результата ===== | ||
| + | |||
| + | После очистки проверьте освобожденное место: | ||
| + | |||
| + | < | ||
| + | # Проверьте общее место | ||
| + | df -h | ||
| + | |||
| + | # Проверьте место Docker | ||
| + | docker system df | ||
| + | |||
| + | # Проверьте конкретную директорию Docker | ||
| + | sudo du -sh / | ||
| + | </ | ||
| + | |||
| + | ===== Экстренные меры ===== | ||
| + | |||
| + | ==== Если места критически мало ==== | ||
| + | |||
| + | < | ||
| + | # Остановите все контейнеры | ||
| + | docker stop $(docker ps -aq) | ||
| + | |||
| + | # Удалите все контейнеры | ||
| + | docker rm $(docker ps -aq) | ||
| + | |||
| + | # Удалите все образы | ||
| + | docker rmi $(docker images -q) | ||
| + | |||
| + | # Полная очистка | ||
| + | docker system prune -a --volumes --force | ||
| + | </ | ||
| + | |||
| + | **ВНИМАНИЕ: | ||
| + | |||
| + | ==== Временное использование другого диска ==== | ||
| + | |||
| + | < | ||
| + | # Переместите Docker на другой диск | ||
| + | sudo systemctl stop docker | ||
| + | sudo mv / | ||
| + | sudo ln -s / | ||
| + | sudo systemctl start docker | ||
| + | </ | ||
| + | |||
| + | ===== Предотвращение проблем ===== | ||
| + | |||
| + | ==== Автоматическая очистка ==== | ||
| + | |||
| + | Добавьте в crontab регулярную очистку: | ||
| + | |||
| + | < | ||
| + | # Редактировать crontab | ||
| + | sudo crontab -e | ||
| + | |||
| + | # Добавить строку для еженедельной очистки | ||
| + | 0 2 * * 0 docker system prune -f | ||
| + | </ | ||
| + | |||
| + | ==== Мониторинг места ==== | ||
| + | |||
| + | < | ||
| + | # Создайте скрипт мониторинга | ||
| + | #!/bin/bash | ||
| + | DISK_USAGE=$(df / | grep -vE ' | ||
| + | if [ " | ||
| + | echo " | ||
| + | docker system prune -f | ||
| + | fi | ||
| + | </ | ||
| + | |||
| + | ===== Рекомендации ===== | ||
| + | |||
| + | * **Минимум свободного места: | ||
| + | * **Регулярная очистка: | ||
| + | * **Мониторинг: | ||
| + | * **Оптимизация: | ||