vm:ubuntu:01-ubuntu_clin

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
vm:ubuntu:01-ubuntu_clin [2025/08/29 07:18] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1vm: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 образов возникает ошибка:
 +<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`