
Чистка Docker — rs clean
Скрипт показывает, что занимает место в Docker — образы, кеш сборки, остановленные контейнеры, логи без лимита — и по шагам чистит с вашего согласия. Тома с данными не трогает.
Диск внезапно заполнен, а данных вроде немного. Обычно виноват Docker: старые образы после обновлений, кеш сборки и особенно логи контейнеров — по умолчанию они растут без ограничения, пока не кончится место.
rs clean показывает, что сколько занимает, предлагает безопасную чистку по шагам и ставит лимит на логи, чтобы проблема не вернулась.
Что показывает
- Сколько занимает Docker: образы, контейнеры, тома, кеш сборки и сколько из этого можно освободить.
- Логи контейнеров: самые большие и у каких нет лимита размера.
- Лимит по умолчанию в
/etc/docker/daemon.json— есть ли он; предложит добавитьmax-size 10m × 3. - Что можно убрать: висячие и неиспользуемые образы, остановленные контейнеры, кеш сборки; неиспользуемые тома — только показывает.
- Системный журнал (journald), если он разросся.
Как выглядит
==> Логи контейнеров
api 3.8GB json-file
! Логи без ограничения размера: api worker
==> Чистка
Удалить висячие образы (старые слои без тега)? [Y/n] y
✓ Висячие образы удалены
Обнулить логи больше 100 МБ (api)? [y/N] y
✓ Лог обнулён: api
Задать лимит логов по умолчанию в /etc/docker/daemon.json (10m × 3)? [Y/n] y
✓ Освобождено: 9.1GB
В конце — итог: что исправить в первую очередь и чем. Полная копия отчёта без цветов — в /tmp/rs-clean.txt, её удобно приложить к обращению.
Как запустить
- Скопируйте команду из блока «Скачать» — он появится после входа. В команде ваш личный токен, он действует 12 часов.
- Выполните её на сервере. Скрипт скачается, проверит контрольную сумму и сразу запустится.
- Дальше — просто
sudo rs clean. Командаrsостаётся на сервере вместе с остальными скриптами:rs info,rs slow,rs security,rs clean. Подсказка —rs help.
rs clean отчёт, затем вопрос на каждый шаг
rs clean --report только отчёт, ничего не удаляется
rs clean --yes без вопросов: только безопасные шаги (висячие образы, кеш сборки)
Безопасно ли это
Скрипт сначала только показывает, что занимает место, и ничего не удаляет без вашего «да» на каждый шаг. Тома с данными, контейнеры сервисов RunStack и работающие контейнеры он не трогает никогда. Исходный код открыт для чтения в /opt/runstack/automations/tools/clean/tool.sh. Удалить сам RunStack: sudo rs remove.
Требования
- Linux с bash и curl, права root (
sudo). Проверяем на Ubuntu 22.04 / 24.04 и Debian 12+, на других дистрибутивах тоже работает — пропуская то, чего там нет. - Docker не обязателен: без него раздел про контейнеры просто пропускается.
Вопросы
Сколько стоит? Сейчас бесплатно.
Не удалит ли он нужное? Тома (там лежат базы и файлы приложений) скрипт не удаляет никогда, контейнеры сервисов RunStack и работающие контейнеры — тоже. Образы удаляются только неиспользуемые: если понадобятся, Docker скачает их снова.
Почему лимит логов действует не сразу? Настройка в daemon.json применяется после перезапуска Docker и только к новым или пересозданным контейнерам. У сервисов RunStack лимит логов задан в их compose-файлах изначально.
Что значит каждая проверка и как исправить находки — в вики.
Материалы доступны после входа и подтверждения email.
