Полезно Удаление образов, контейнеров и томов Docker

baltun

Администратор
Сообщения
10.901
Реакции
2.596
Баллы
2.003
Docker позволяет быстро упаковать приложение или сервис в контейнер, который можно запустить в любом окружении. Однако при работе с Docker быстро накапливаются ненужные образы, контейнеры и тома данных, которые засоряют вывод и потребляют дисковое пространство.
Docker не предоставляет прямых команд для чистки, однако он предлагает набор инструментов для чистки системы с помощью командной строки.

Удаление образов Docker
Удаление конкретного образа
Команда docker images с флагом –a позволяет узнать ID образа, который нужно удалить. Она отображает все образы, включая промежуточные уровни. Определив образы, которые нужно удалить, вы можете передать их ID команде docker rmi:
Код:
docker images -a
docker rmi Image1 Image2

Удаление ненужных образов
Образы Docker состоят из нескольких уровней. Недействительные образы – это уровень образов, которые больше не имеют никакого отношения к образам с метками. Они впустую потребляют дисковое пространство. Чтобы найти такие образы, используйте команду docker images и флаг –f (filter) со значением dangling=true. Если вы уверены, что хотите удалить все эти образы, добавьте в команду docker rmi флаг –q и укажите ID образов через пробел.

Код:
docker images -f dangling=true

Чтобы найти и удалить образы:
Код:
docker rmi $(docker images -f dangling=true -q)

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

Удаление образов по шаблону
С помощью команд docker images и grep можно найти все образы, соответствующие шаблону. Чтобы удалить все совпадающие с шаблоном образы, можно передать команде docker rmi ID всех образов с помощью команды awk. Имейте в виду: эти утилиты не предоставляются платформой Docker и не всегда доступны в системе по умолчанию.
Код:
docker ps -a |  grep "шаблон"

чтобы удалить образы:
Код:
docker images | grep "шаблон" | awk '{print $1}' | xargs docker rm

Удаление всех образов
Чтобы просмотреть все доступные образы Docker, добавьте флаг -a в команду docker images.
Код:
docker images -a

Чтобы удалить все образы, добавьте флаг –q и передайте образы команде docker rmi:
Код:
docker rmi $(docker images -a -q)

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

Удаление конкретного контейнера
Команда docker ps с флагом –a отображает все доступные контейнеры (их имена или ID).
Код:
docker ps -a

Чтобы удалить контейнер (или несколько контейнеров), передайте имя или ID команде docker rm:
Код:
docker rm ID_или_имя_контейнера ID_или_имя_контейнера1

Удаление контейнера при остановке
Если при сборке контейнера вы точно знаете, что после выполнения задачи он станет ненужным, вы можете автоматически удалить его с помощью docker run –rm. Как только контейнер выполнит свою задачу и остановится, он будет удалён.
Код:
docker run --rm имя_контейнера

Удаление всех остановленных контейнеров
С помощью команды docker ps –a, флага –f и параметра status вы можете найти все доступные контейнеры, которые находятся в определённом состоянии: created, restarting, running, paused и exited.
Код:
docker ps -a -f status=exited

Чтобы удалить все остановленные контейнеры, используйте флаг –q в команде docker rm и передайте ей ID контейнеров, которые нужно удалить:
Код:
docker rm $(docker ps -a -f status=exited -q)

Удаление контейнера с помощью нескольких фильтров
Фильтры Docker можно комбинировать. Для этого нужно просто повторно добавить флаг –f. К примеру, чтобы вывести все контейнеры со статусом created (контейнер был создан, но запущен с помощью неправильной команды) и exited, можно использовать команду:
Код:
docker ps -a -f status=exited -f status=created

Чтобы удалить эти контейнеры, нужно ввести:
Код:
docker rm $(docker ps -a -f status=exited -f status=created)

Удаление контейнеров по шаблону
Поиск контейнеров по шаблону можно выполнить с помощью команд docker ps и grep.
Код:
docker ps -a |  grep "шаблон"

Найдя все контейнеры, которые соответствуют заданному шаблону, вы можете удалить их с помощью команд docker rmi, awk и xargs.
Код:
docker ps -a | grep "шаблон" | awk '{print $3}' | xargs docker rmi

Остановка и удаление контейнера
Чтобы просмотреть все контейнеры в системе, введите:
Код:
docker ps -a

Чтобы удалить контейнеры, передайте их ID командам docker stop и docker rm с помощью флага –q:
Код:
docker stop $(docker ps -a -q)[/SIZE][/SIZE]
[SIZE=5][SIZE=4]docker rm $(docker ps -a -q)

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

Удаление конкретного тома (Docker 1.9 +)
Код:
docker volume ls[/SIZE][/SIZE][/SIZE][/SIZE]
[SIZE=5][SIZE=4][SIZE=5][SIZE=4]docker volume rm том1 том2 том3

Удаление недействительных томов (Docker 1.9 +)
Код:
docker volume ls -f dangling=true[/SIZE][/SIZE][/SIZE][/SIZE]
[SIZE=5][SIZE=4][SIZE=5][SIZE=4]docker volume rm $(docker volume ls -f dangling=true -q)

Удаление тома вместе с контейнером
Код:
docker rm -v имя_контейнера
Примечание: Это работает только с безымянными контейнерами!

Как посмотреть использование памяти и CPU всех Docker контейнеров:

Код:
docker ps -q | xargs  docker stats --no-stream
 
Последнее редактирование:
Назад
Верх Низ