Docker cleanup (очистка docker)

Диск заполнен на 100% из-за висячих томов и образов docker

Когда я впервые начал использовать docker, он меня поразил. Уверен, что и вы испытали нечто подобное. Время шло, а docker не переставал меня удивлять. Например, однажды он занял все свободное место на диске. Пока я останавливал и запускал контейнеры, скачивал классные штуки с docker hub, гигабайты быстро таяли, заполняясь висячими (dangling) томами, остановленными контейнерами и ненужными образами.

Запомнить их довольно сложно, и я поместил эти команды в скрипт. В общем, для очистки можно использовать специальные контейнеры, например docker-gc от spotify, или запомнить команды (да, я знаю: когда разберешься с функциями команд, они запомнятся сами собой). Однако вы можете не захотеть выполнять все эти процедуры для очистки docker-окружения.

До команды Docker дошла информация об этой проблеме, и в версии 1.13 был реализован набор легко запоминаемых команд очистки, которые теперь доступны в рамках базовой команды system. Давайте на них взглянем.

Использование базовой команды docker system

Осмотр docker-окружения

Команда docker system df выдает подробную статистику о контейнерах, образах и томах. Она также сообщает, сколько места можно освободить, выполнив очистку.

docker system df

Подробная информация о docker-окружении, полученная с помощью docker system df -v

Верните себе драгоценное пространство

Очистить систему можно с помощью команды docker system prune. По умолчанию будут удалены остановленные контейнеры, висячие образы (слои, не связанные с используемыми образами), тома и сети, не относящиеся к работающим контейнерам. Опция -a позволяет удалить не только висячие, но и вообще все неиспользуемые образы (не ассоциированные с запущенными контейнерами). Опция -f подавляет запросы на подтверждения. Обе опции по умолчанию выключены.

docker system prune

Удаляем неиспользуемые образы с помощью docker system prune -a

Команда prune полезна в том случае, когда нужно удалить только висячие образы и остановленные контейнеры. Выполнив docker image prune, docker container prune, вы избавитесь от ненужных образов и контейнеров.

Удаляем все ненужные контейнеры с помощью docker container prune

Удаляем все ненужные образы с помощью docker image prune

Подытожим: приведенные ниже команды (с опциями и вариациями) помогут освободить место на диске:

docker system // посмотреть доступные команды
docker system df // получить статистику о docker-окружении
docker system prune // очиститься

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