Удаление образов, контейнеров, томов и сети Docker
Docker — инструмент для создания приложений с использованием контейнеров. При инициализации Docker появляются расходные файлы и объекты, которые необходимо очищать.
Вы можете удалять появившиеся структуры руками, но лучше оптимизировать эту задачу через командную строку.
Удаление контейнеров
Перейдите во вкладку «Containers/Apps» (веб Docker Desktop). Укажите, что нужно сделать с элементами и примените:
Также, способ, использую консоль. Команда для удаления — docker container rm. Синтаксис:
- docker container rm [параметры удаления] [ID объектов]
Параметры — (—force/-f — удаление контейнера в принудительном порядке), (—link/-l — удалить связь между элементами), (—volume/-v — удалить неопределенные тома, которые связаны с контейнером). ID получите с помощью команды — docker ps.
Параметры:
- —-all или -a: выводим все работающие контейнеры
- —filter или -f: фильтрация флагов
- —format: формат вывода
- —last или -n: вывод информации о последних n контейнерах
- —latest или -l: вывод информации о последнем контейнере
- —no-trunc: полный вывод
- —quiet или -q: отдельный вывод идентификационного номера
- —size или -s: вывод размера
С этими параметрами можно гибко взаимодействовать с группой контейнеров или отдельными единицами. Например, чтобы создать списки контейнеров на удаление — docker ps -a -f status=created -f status=exited, чтобы удалить — docker container rm $(docker ps -a -f status=created -f status=exited -q). Перед удалением лучше остановить предполагаемые контейнеры. Чтобы удалить все контейнеры:
- docker stop $(docker ps -a -q)
- docker container rm $(docker ps -a -q)
Удаление образов
Перейдите во вкладку «Images».
Чтобы удалить, найдите «Clean up…», выберите образы для удаления. Если образ в работе, просто удалить его не получится.
Через командную строку
docker rmi [параметры удаления] [ID образов]
Параметры:
- —force или -f: удалить образ в принудительном порядке
- —no-prune: не удалять непомеченные
Узнать ID образа:
- docker images [параметры] [REPOSITORY:[TAG]]
Параметры:
- —all или -a: выводим все образы. По умолчанию промежуточные будут скрыты;
- —digests: выводим дайджесты;
- —filter или -f: фильтр по флагам;
- —format: формат вывода;
- —no-trunc: не обрезать вывод;
- —quiet или -q: выводим только идентификаторы;
Запросите нужный список образов и используйте его как параметр для команды docker rmi. В качестве примера избавимся от образов, не привязанных к контейнерам. Для этого воспользуемся флагом dangling=true — docker images –filter dangling=true. Чтобы удалить список — docker rmi $(docker images –filter dangling=true -q). Чтобы удалить неработающие образы — команда docker image prune.
Удаление томов
Том — это файловая система, которая находится вне контейнеров, размещенная на хост-машине. Если вы хотите освободить пространство на диске от них, перейдите в раздел «Volumes», в правом верхнем углу выберите:
Чтобы удалить тома: docker volume rm [параметры] [имена томов]
Параметров у этой команды довольно мало, возможно принудительное удаление тома. Удалить можно только те тома, что не связаны с работающими контейнерами.
docker volume ls [параметры] — команда для определения имени тома. Параметры:
- —filter или -f: фильтр по флагам
- —format: формат вывода
- —quiet или -q: выводим только имена
Чтобы стереть тома, несвязанные с контейнерами — docker volume ls -f dangling=true. Команда для запуска удаления — docker volume rm $(docker volume ls -f dangling=true -q). Но можно обойтись и другой командой для удаления таких томов: docker volume prune.
Удалить сети
Чтобы удалить сети в Docker, используйте команду «docker network rm» со следующим синтаксисом:
docker network rm [Сетевые имена/идентификаторы]
Эта команда не имеет параметров. Вы можете передавать как имена, так и идентификаторы. Чтобы узнать имена и идентификаторы сетей, используйте «docker network ls»:
docker network ls [параметры]
Есть 4 параметра:
- —filter или -f: фильтровать по флагам
- —format: выходной формат
- —no-trunc: не обрезать вывод
- —quiet или -q: показать только идентификаторы
Перед удалением сети необходимо удалить объекты, которые ее используют. Чтобы узнать, какие контейнеры используют конкретную сеть, используйте следующую команду:
docker ps -f network=[ID сети]
После этого можно приступать к удалению сети. Например, чтобы удалить сети со значением driver=bridge:
docker network ls -f driver=bridge
docker network rm $(docker network ls -f driver=bridge -q)
Очистка Docker от всех объектов
Сначала остановить и удалить все контейнеры:
- docker stop $(docker ps -a -q)
- docker rm $(docker ps -a -q)
Удалить все образы:
- docker rmi $(docker images -a -q)
Удалить все тома:
- docker volume rm $(docker volume ls -a -q)
Удалить все сети:
- docker network rm $(docker network ls -a -q)