vm:ubuntu:01-ubuntu_clin

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

Добавьте в 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` для исключения ненужных файлов:

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`

  • vm/ubuntu/01-ubuntu_clin.txt
  • Последнее изменение: 2025/08/29 23:19
  • admin