Небольшая юмористическая заметка на тему того, что делать, если докер всё пожрал всё место на диске, от для человека, который каждый день работает с докером не шарит за докер.
Заметку написала моя коллега, орфография и пунктуация по возможности сохранены. В какой-то момент ей надоело вспоминать или гуглить как чистить мусор, который оставляет докер, его билды, образы и вольюмы, и она свела всё в одну заметку.
Как мне кажется, получилось довольно смешно. Всё написанное в статье выдумка, любые совпадения с реальным миром случайны, если вы вводите в консоль sudo
или его аналог - вы делаете это на свой страх и риск. Слова, замененные на другие для соблюдения правил Хабра, выделил курсивом, но думаю всё поймут, что было в оригинале написано.
Без sudo 🏝️
docker system df
- общая инфа по тому, сколько где памяти жрётся:
Можно (но лучше не стоит) снести всё лишнее одной командой
docker system prune
- аккуратно, можно случайно снести чей-то основной, но остановленный контейнер;Много лишнего в build cache - тут можно смело фигачить
docker builder prune
;Образы, контейнеры, вольюмы подчищаются через
docker image prune
(безопасно) иdocker container prune
(сносит все остановленные контейнеры), еще естьdocker volume prune
.
C sudo ⚠️
sudo ncdu /var/lib/docker
- чекнуть, что там такого пожрано. Всё ниже может иметь неопределённые последствия, но пока я с ними не встречалась;Если в
/var/lib/docker/containers
много Гб, то, скорее всего, дело в логах самого докера. Можно почистить всё черезsudo sh -c "truncate -s 0 /var/lib/docker/containers/*/*-json.log"
;Огромная папка
/var/lib/docker/overlay2
. Есть подозрение, что тут неверно считает размер, но факт, что туда набивается лишнего.Особое внимание стоит обратить на
diff
- там иногда забивается/tmp/
директория и прочее, что не лежит в файловой системе хоста. Можно прошерстить основные контейнеры и найти тот, который ссылается на эти папки, черезdocker container inspect --format '{{json .GraphDriver.Data }}' $айди_подозрительного_контейнера} | jq .
и сказать а-та-та владельцу.
Если всё очень плохо, то остаётся только радикальное решение - рестарт докера и перезагрузка бокса.