Небольшая юмористическая заметка на тему того, что делать, если докер всё пожрал всё место на диске, от для человека, который каждый день работает с докером не шарит за докер.

Заметку написала моя коллега, орфография и пунктуация по возможности сохранены. В какой-то момент ей надоело вспоминать или гуглить как чистить мусор, который оставляет докер, его билды, образы и вольюмы, и она свела всё в одну заметку.

Как мне кажется, получилось довольно смешно. Всё написанное в статье выдумка, любые совпадения с реальным миром случайны, если вы вводите в консоль sudo или его аналог - вы делаете это на свой страх и риск. Слова, замененные на другие для соблюдения правил Хабра, выделил курсивом, но думаю всё поймут, что было в оригинале написано.

Без sudo 🏝️

docker system df - общая инфа по тому, сколько где памяти жрётся:

  • Можно (но лучше не стоит) снести всё лишнее одной командой docker system prune - аккуратно, можно случайно снести чей-то основной, но остановленный контейнер;

  • Много лишнего в build cache - тут можно смело фигачитьdocker builder prune;

  • Образы, контейнеры, вольюмы подчищаются через docker image prune (безопасно) и docker container prune (сносит все остановленные контейнеры), еще есть docker volume prune.

C sudo ⚠️

  1. sudo ncdu /var/lib/docker - чекнуть, что там такого пожрано. Всё ниже может иметь неопределённые последствия, но пока я с ними не встречалась;

  2. Если в /var/lib/docker/containers много Гб, то, скорее всего, дело в логах самого докера. Можно почистить всё через sudo sh -c "truncate -s 0 /var/lib/docker/containers/*/*-json.log";

  3. Огромная папка /var/lib/docker/overlay2. Есть подозрение, что тут неверно считает размер, но факт, что туда набивается лишнего.

  4. Особое внимание стоит обратить на diff - там иногда забивается /tmp/ директория и прочее, что не лежит в файловой системе хоста. Можно прошерстить основные контейнеры и найти тот, который ссылается на эти папки, через docker container inspect --format '{{json .GraphDriver.Data }}' $айди_подозрительного_контейнера} | jq . и сказать а-та-та владельцу.

Если всё очень плохо, то остаётся только радикальное решение - рестарт докера и перезагрузка бокса.