Как очистить докер

Я только что заметил, что на моем ноутбуке не хватает места на диске. Docker использует довольно много, как обнаружил mate-disk-usage-analyzer:

Enter image description here

Папка docker/aufs/diff содержит 152 папки, заканчивающиеся на -removing.

Я уже выполнил следующие команды для очистки

Kill all running containers:
# docker kill $(docker ps -q)

Delete all stopped containers
# docker rm $(docker ps -a -q)

Delete all images
# docker rmi $(docker images -q)

Remove unused data
# docker system prune

And some more
# docker system prune -af

Но снимок экрана был сделан после того, как я выполнил эти команды.

Что такое docker/aufs/diff, почему он занимает столько места и как мне его убирать?

У меня Docker версии 17.06.1-ce, сборка 874a737. Это произошло после очистки, так что это определенно проблема.

Ответ 1

Ниже приводится радикальное решение. ЭТО УДАЛИТЬ ВСЕ ВАШЕ ЗАДАНИЕ ДОКЕРА. ВКЛЮЧАЯ ОБЪЕМЫ.

$ sudo su
# service docker stop
# cd /var/lib/docker
# rm -rf *
# service docker start

Подробнее см. https://github.com/moby/moby/issues/22207#issuecomment-295754078

Он может не быть /var/lib/docker

Расположение докеров может быть другим в вашем случае. Вы можете использовать анализатор использования диска (например, mate-disk-usage-analyzer), чтобы найти папки, которым требуется большая часть пространства.

См. Где хранятся изображения Docker на главной машине?

Ответ 2

Этот каталог - это где уровни корневых файлов контейнера хранятся при использовании драйвера хранения AUFS (по умолчанию, если загружаются модули ядра AUFS).

Если у вас есть группа *-removing dirs, это вызвано неудачной попыткой удаления. Это может произойти по разным причинам, наиболее распространенным является отказ unmount из-за device or resource busy.

До Docker 17.06, если вы использовали docker rm -f, чтобы удалить контейнер, все метаданные контейнера будут удалены, даже если в процессе очистки контейнера была некоторая ошибка (например, не удалось удалить слой rootfs). В 17.06 он больше не удалит метаданные контейнера и вместо этого отметит контейнер с статусом Dead, чтобы вы могли попытаться удалить его снова.

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