Pull to refresh

Всё /var/lib/docker пожрал … docker

Level of difficultyEasy
Reading time2 min
Views6.3K

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

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

Как мне кажется, получилось довольно смешно. Всё написанное в статье выдумка, любые совпадения с реальным миром случайны, если вы вводите в консоль 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 . и сказать а-та-та владельцу.

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

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 12: ↑12 and ↓0+12
Comments9

Articles