Введение

В этой статье описывается, как удалять объекты, изображения, контейнеры, тома и сети в Docker. Мы подробно объясним, как использовать опции команды Docker rm и другие полезные команды, которые сложно понять только из официальной документации. Если вы новичок в Docker, обратитесь к этой статье как к памятке.

Удаление всех неиспользуемых или висящих образов, контейнеров, томов и сетей

Вы когда-нибудь хотели избавиться от ненужных вещей с помощью Docker? Если вы хотите удалить объект Docker, это часто бывает. В этом случае действует команда Docker prune. Команда prune позволяет сразу удалить неиспользуемые объекты Docker (контейнеры, образы, сети, тома). Ниже приведен пример.

docker system prune

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

Дополнительную информацию о фильтрации можно найти в следующей официальной документации: https://docs.docker.com/engine/reference/commandline/system_prune/

docker system prune -a --filter "until = 24h"

В это время опция -a может очистить кеш сборки и промежуточный образ.

Удаление контейнеров Docker

В этом разделе описывается команда для удаления контейнера Docker.

Удаление одного или нескольких контейнеров по идентификатору или имени

При удалении одного контейнера Docker вы можете удалить его, указав идентификатор или имя контейнера. Ниже приведен пример.

docker rm 4c01db0b339c

Вы также можете удалить несколько контейнеров вместе, указав идентификаторы или имена нескольких контейнеров, как показано ниже.

docker rm 4c01db0b339c d7886598dbe2

Удаление всех остановленных контейнеров

Если ваша версия Docker 1.13 или выше, вы можете легко удалить все остановленные контейнеры с помощью команды docker container prune. Ниже приведен пример.

docker container prune

Удалить контейнер при выходе

Вы используете много временных контейнеров Docker? В этом случае вы можете использовать параметр --rm из docker run для автоматического удаления контейнера при его выходе. Его нельзя использовать вместе с опцией -d (режим отсоединения).

docker run —rm image_name

Остановить и удалить все контейнеры

Следующая команда удобна, если вы хотите остановить/удалить все контейнеры, включая работающий контейнер.

docker stop $ (docker ps -a -q)
docker rm $ (docker ps -a -q)

В этой команде docker ps -a -q используется для отображения списка идентификаторов всех контейнеров Docker, а docker rm используется для их удаления.

Удаление образов Docker

Удаление одного или нескольких изображений по id

Используйте команду docker rmi для удаления образа Docker. Как показано ниже:

docker rmi image_id

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

docker rmi image_id_1 image_id_2

Удаление изображений по тегу

С помощью команды docker rmi обычно можно удалить, только указав идентификатор изображения, но вы можете удалить его, выбрав имя тега с помощью параметра -f.

docker rmi -f tag_name

Удаление висящих изображений

Как и при удалении контейнера, при удалении образа можно быстро удалить все остановленные контейнеры, указав в команде prune. Ниже приведен пример.

docker image prune

Удаление всех неиспользуемых изображений

С помощью команды docker image prune вы можете использовать параметр -a для удаления только неиспользуемых образов из существующих контейнеров.

docker image prune -a

Удаление всех изображений

Чтобы удалить все изображения, независимо от того, используете вы их или нет, введите следующую команду:

docker rmi $ (docker images -a -q)

Он удаляет все изображения, отображая все образы Docker с параметром -a параметра docker images и отображая идентификаторы всех изображений с параметром -q.

Удаление томов Docker

Удаление одного или нескольких томов

Чтобы удалить том, используйте команду docker volume rm, как показано ниже.

docker volume rm volume_name

Как и при удалении других объектов, возможно многократное удаление.

docker volume rm volume_name1 volume_name2

В настоящее время, если ошибка показывает volume is in use, возможно, контейнер, использующий том, еще не удален. В этом случае вы можете удалить его, удалив соответствующий контейнер Docker.

Удаление всех неиспользуемых томов

Вы можете удалить неиспользуемые тома с помощью команды docker volume prune.

docker volume prune

—filter Вы также можете использовать флаг, чтобы ограничить диапазон удалений. Например, следующая команда удаляет только тома с меткой test.

docker volume prune —filter "label = test"

Удаление сетей Docker

Удаление одной или нескольких сетей по идентификатору или имени

Чтобы удалить сеть Docker, используйте команду docker network rm. В этом случае укажите либо имя, либо id сети.

docker network rm network_name_or_id

Эта команда также может быть удалена несколько раз и определяется следующим образом.

docker network rm 3695c422697f my-network

Кроме того, если вы укажете несколько сетей, эта команда попытается удалить каждую сеть по очереди. Если удалить одну сеть не удается, перейдите к следующей и попробуйте удалить эту сеть. При каждом удалении сообщается об успехе или неудаче.

Удаление всей неиспользуемой сети

Если вы хотите удалить неиспользуемую сеть, используйте команду docker network prune, как и любой другой объект.

docker network prune

Вы можете указать диапазон для удаления, используя параметр --filter. Например, ниже приведен пример удаления только той сети, для которой прошло 24 часа.

docker network prune --filter "until = 24h"

Удаление docker-compose

Наконец, я покажу вам, как удалить объект, созданный docker-compose, если вы хотите очистить среду разработки и воссоздать ее с нуля.

Ниже приведен пример команды для очистки всех контейнеров, образов, томов, сетей и неопределенных контейнеров, созданных с помощью docker-compose.

docker-compose down --rmi all -v --remove-orphans

docker-compose down является полной противоположностью docker-compose up. По умолчанию он удаляет созданные объекты, такие как контейнеры и сети. Кроме того, каждый вариант означает следующее.

  • -- rmi all Удалить все изображения
  • -v Удалите именованные тома, объявленные в разделе томов файла docker-compose.yml, и анонимные тома, прикрепленные к контейнеру.
  • --remove-orphans Удалить контейнеры, не определенные в docker-compose.yml

Таким образом, этот пример команды удаляет контейнеры, образы, тома, сети и неопределенные контейнеры.

Заключение

Я познакомил вас с различными командами удаления Docker. Recent Docker очень удобен тем, что вы можете удалить ненужные объекты с помощью команды prune. Вы можете узнать больше о представленных командах из официальной документации ниже.

— -

Shisho Cloud защищает вашу инфраструктуру как код всего за несколько кликов.

Вы можете сохранить свою безопасность IaC бесплатно. Кредитная карта не требуется.

(Эта статья перепечатана со следующего URL: https://shisho.dev/blog/posts/docker-remove-cheatsheet/)