Как удалить Docker-контейнеры, образы, тома и сети 2022
Docker позволяет быстро создавать, тестировать и развертывать приложения в виде переносимых самодостаточных контейнеров, которые могут работать практически где угодно.
Docker не удаляет неиспользуемые объекты, такие как контейнеры, изображения, тома и сети, если вы явно не указали это сделать. Работая с Docker, вы можете легко накапливать большое количество неиспользуемых объектов, которые занимают значительное дисковое пространство, и загромождают выходные данные, создаваемые командами Docker.
Это руководство служит «шпаргалкой», помогающей пользователям Docker организовать свою систему и освободить дисковое пространство, удалив неиспользуемые контейнеры Docker, образы, тома и сети.
Вывод списка всех образов Docker
У меня есть три образа:
- MySQL в версии 8.0.19 и MySQL в последней версии (с тегом latest),
- а также Cassandra в последней версии.
(Прим. ред: терминологию можно посмотреть во вступительной статье по Docker).
Чтобы получить больше информации об образе, можно воспользоваться следующей командой:
В выводе команды мы получаем список сведений. Альтернативный вариант получения информации — при помощи ID образа:
В выводе команды вы получите очень много всего, поэтому лучше сразу отфильтровать нужную информацию:
Удаление контейнеров Docker
Контейнеры Docker не удаляются автоматически при их остановке, если вы специально не указали флаг —rm при его запуске.
Удаляем один или несколько контейнеров
Чтобы удалить один или несколько образов Docker используйте команду docker container rm, после которой следует указать идентификатор контейнера, который необходимо удалить. Список всех активных и неактивных контейнеров можно получить, передав флаг -a команде docker container ls:
В качестве результата выполнения этой команды вы должны увидеть такую таблицу:
Как только вы нашли необходимый идентификатор контейнера, который хотите удалить, передайте его имя команде docker container rm. Например, чтобы удалить первые два контейнера, перечисленных выше выполните команду:
Если вы получаете сообщение об ошибке, подобное приведенному ниже, это означает, что контейнер все еще работает. Перед удалением контейнера, его необходимо остановить.
Error response from daemon: You cannot remove a running container fc983ebf4771d42a8bd0029df061cb74dc12cb174530b2036987575b83442b47. Stop the container before attempting removal or force remove.
Удаление изображений докеров
Удаление одного или нескольких изображений
Чтобы удалить один или несколько изображений Docker, используйте команду docker images ls , чтобы найти идентификатор изображений, которые вы хотите удалить.
Результат должен выглядеть примерно так:
После того как вы расположены изображения , которые вы хотите удалить, передать их IMAGE ID в команду docker image rm . Например, чтобы удалить первые два изображения, перечисленные в приведенном выше выводе, выполните:
Если вы получили ошибку, аналогичную приведенной ниже, это означает, что изображение используется существующим контейнером. Чтобы удалить изображение, вам нужно сначала удалить контейнер.
Удалить оборванные и неиспользуемые изображения
Docker предоставляет команду docker image prune , которая может использоваться для удаления оборванных и неиспользуемых изображений.
Оборванное изображение – это изображение, которое не помечено и не используется никаким контейнером. Чтобы удалить висячие изображения, введите:
Вам будет предложено продолжить, используйте флаг -f или —force для обхода запроса.
При удалении оборванных изображений, если созданные вами изображения не помечены, они также будут удалены.
Чтобы удалить все изображения, на которые не ссылается какой-либо существующий контейнер, а не только свисающие, используйте флаг -a :
Удаление изображений с использованием фильтров
С помощью команды docker image prune вы можете удалить изображения на основе условия, используя флаг фильтрации —filter . На момент написания этой статьи в настоящее время поддерживаются фильтры являются until и label . Вы можете использовать несколько фильтров, передавая несколько флагов —filter .
Например, чтобы удалить все изображения, созданные более 12 часов назад, выполните:
УДАЛЯЕМ ОБРАЗЫ ДОКЕРА
1. Узнаем имена и идентификаторы образов, которые нужно закрыть
Для того, чтобы получить информацию о запущенных образах, нужно ввести команду:
В столбце «REPOSITORY» можно узнать имя, а в столбце «IMAGE_ID» — идентификатор образа, который нужно закрыть.
2. Удаляем один или несколько образов
Для удаления одного или нескольких образов, нужно ввести команду:
ПРИМЕРЫ УДАЛЕНИЯ ОБРАЗОВ:
- Например, для удаления образа по имени «tort», наберем:
- А для удаления двух образов с именами «tort» и «ubuntu», введем:
Если при удалении образа возникает подобная ошибка:
Error response from daemon: conflict: unable to remove repository reference «tort» (must force) — container ee130eb8eaf5 is using its referenced image 60a325a15a7e, это значит, что Вы поспешили с закрытием образа, забыв предварительно удалить связанные с этим образом контейнеры. О том, как удалить контейнеры, смотрите информацию выше, в предыдущем разделе статьи.
4. Удаляем все образы
Для удаления всех образов введем команду:
Если при удалении образов возникнут подобные ошибки:
Error response from daemon: conflict: unable to delete 51d053942024 (must be forced) — image is referenced in multiple repositories
или такие:
Error response from daemon: conflict: unable to delete b0d6bcf625c7 (cannot be forced) — image has dependent child images
Тогда можно:
1.Удалить образ принудительно, добавив к командам удаления флаг -f:
docker rmi -f
2.Удалить все образы принудительно:
docker rmi $(docker images -q) -f
Как известно, «чистота — залог здоровья»! Поэтому будем считать, что удалив ненужные образы и контейнеры докера, мы выполнили миссию компьютерного доктора и добавили здоровья своей рабочей лошадке!
Заключение
В этом руководстве рассказывается о некоторых распространенных командах, используемых для удаления образов, контейнеров и томов с помощью Docker. Существует много других комбинаций команд и флагов. Более полную информацию можно найти в документации Docker по командам docker system prune , docker rmi , docker rm и docker volume rm . Если вы хотели бы увидеть в этом руководстве часто встречающиеся задачи по очистке системы, задавайте вопросы и оставляйте свои предложения в комментариях.
Want to learn more? Join the DigitalOcean Community!
Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in our Questions & Answers section, find tutorials and tools that will help you grow as a developer and scale your project or business, and subscribe to topics of interest.
Краткая справка
Docker — это система управления контейнерами. Контейнеры же представляют собой логическое эволюционное продолжение виртуальных машин. Это изолированная среда для разработки и тестирования программного обеспечения.
Контейнер Docker потребляет мало ресурсов и быстро запускается, а еще его легко переносить с одного устройство на другое. Из-за этих преимуществ Docker постепенно наращивает аудиторию и превращается в некий индустриальный стандарт, которым пользуются даже крупные корпорации вроде Microsoft.
Поэтому стоит хотя бы на базовом уровне понимать, что есть Docker и как им управлять. В этом материале речь пойдет об основных командах для управления контейнерами. Будем их создавать, запускать, удалять и выполнять прочие полезные задачи, возникающие по ходу работы.
Работа с хранилищем контейнеров Docker
Вы можете просмотреть всю информацию о контейнере с помощью docker inspect, который показывает драйверы и данные файловой системы, а также все существующие монтирования и тома.
докер проверяет идентификатор контейнера
Контейнеры хранят данные двумя способами. Во-первых, это базовая файловая система, которая копируется из образа и уникальна для каждого контейнера. Docker использует «нижний каталог» и «верхний каталог», которые представляют собой отдельные уровни, которые объединяются в одну гибридную файловую систему. Нижний каталог хранит данные базового образа, а верхний каталог хранит все, что было изменено во время выполнения, например файлы журнала. В любом случае их хранение зависит от того, какой драйвер файловой системы Docker настроен на использование.
Тогда есть горы, которые привязывают каталоги с хоста к контейнеру, обычно управляются автоматически с помощью функции Docker, называемой тома. Они обычно хранятся и доступны для конечных пользователей. Если вы выполняете какую-либо работу, требующую изменения данных в запущенных контейнерах, вам, вероятно, следует изменить том или привязать монтирование.
Доступ к томам
Доступ к монтированию привязки можно получить напрямую, и это отличный выбор, если вы хотите сохранить конфигурацию, которая используется для многих контейнеров, или хранить доступные данные, которые сохраняются при перезапуске контейнера.
Если вы хотите изменить данные, хранящиеся в томах, вы тоже можете это сделать. Они хранятся в стандартном формате, доступном из Linux:
/ вар / библиотека / докер / тома / volumeID / _data
Вы можете получить идентификатор тома и информацию с помощью docker volume inspect.
Как и изображения, тома могут устареть. Вы можете легко их удалить, но их резервное копирование и перенос — более сложный процесс.
объем докера удалить объем докера rm volumeID
Изменение файловой системы контейнера Docker
Если вы хотите изменить файловую систему контейнера, как и изображения, это плохая идея. В большинстве случаев вам следует создать новую версию контейнера с обновленными изменениями и развернуть обновление.
Однако, если вы хотите внести некоторые быстрые изменения, не останавливая контейнер, лучший способ — просто открыть оболочку bash внутри контейнера и изменить ее с помощью Docker. Сделать это очень просто — запустите docker exec в контейнере и передайте «bash» в качестве команды:
docker exec -it контейнер bash
Отсюда вы можете использовать обычные команды Linux. Если вы хотите сделать это удаленно, вы можете установить SSH-сервер в свой контейнер и привязать порт 22 к другому порту на хосте.