Чистим место на VPS/VDS с докерами

Заметки на полях

У меня архитектура микросервисная и для разных сервисов я люблю брать небольшие облачные инстансы (пользуюсь SimpleCloud). Почему именно они? Пользовался DO, пользовался VSсale, и другими… Но опытным путем пришел к тому, что в соотношении цена-качество-аптайм и удобство работы выигрывает SimpleCloud. У меня почти нет нареканий. За более чем 3 года работы я суммарно писал в службу поддержки раза 4 и все проблемы решались достаточно быстро. Но речь не об этом…

Ну так вот, микросервисы доставляются через контейнеры (ессно Docker). И тут один сервис вдруг говорит — место кончилось. Внезапно. Наверное у многих были случаи в жизни, когда кончается место на сервере. Это случается не часто, но случается. И что делать? Решил выложить шпаргалку, чтобы самому не забыть.

Смотрим кто занял место. Для этого есть несколько способов.

Есть утилита ncdu, если вы ее поставили. Если нет — то с нехваткой места вы ее уже не сможете поставить. Она в человеческом виде показывает кто самый “жирный”.

Если просто набрать

df -h

Покажет свободное место. Не всегда это может помочь, особенно если вывод выглядит так:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1 80G 80G 80G 100% /

Тогда вы можете пройти от корня командой:

du -hx --max-depth=1 /

до тех пор пока не выявите самую большую директорию. В итоге выясняем что место сожрано /var/lib/docker. Так как это девелоп версия сервиса, то по мере разработки, экспериментов и прочих манипуляций на инстансе может собраться склад неиспользуемых данных от контейнеров (особенно если активно собираете контейнеры).

Чистим следы Docker’a

Чтобы удалить все неиспользуемое, достаточно выполнить команду:

$ docker volume prune -f
$ docker system prune -af

В итоге оказалось что 48% диска было занято именно неиспользуемыми данными от старых контейнеров и точек монтирования. Буквально парой команд было вычищено огромное количество мусора.