Как удалить все Docker локальные изображения Docker


268

Я недавно начал использовать Docker и никогда не понимал, что я должен использовать docker-compose downвместо ctrl-cили docker-compose stopчтобы избавиться от своих экспериментов. Теперь у меня есть большое количество ненужных образов Docker локально.

Есть ли флаг, который я могу запустить, чтобы удалить все локальные образы докеров и контейнеры?

Что-то вроде - все docker rmi --all --forceфлаг не существует, но я ищу что-то с похожей идеей.



2
docker images purge-> удалит все ваши изображения докера
muthukumar helius

С xargs:docker image ls -q | xargs -I {} docker image rm -f {}
Аркадыть

@muthukumarhelius Я думаю, что вы имеете в виду docker image prune(изображение в единственном числе, и это чернослив вместо очистки).
Андрес Мехия

Ответы:


536

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

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

Чтобы удалить все изображения,

docker rmi -f $(docker images -a -q)

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

Если вы работаете в Windows (Powershell),

$images = docker images -a -q
foreach ($image in $images) { docker image rm $image -f }

7
unknown shorthand flag: 'a' in -aпри бегеdocker rmi -f $(docker images -a -q)
Ашутош Чамоли

25
@Ashutosh Chamoli: не работает в CMD, работает в PowerShell.
Джек,

4
docker images -a -q | % { docker image rm $_ -f }
Однострочный

4
Должно быть, я приходил сюда сотни раз. Спасибо за написание этого ответа!
Ajay Maity

「Docker rmi -f $ (docker images -a -q) real настоящий задира
Sinux

177

Используйте это, чтобы удалить все :

docker system prune -a --volumes

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

WARNING! This will remove:
    - all stopped containers
    - all networks not used by at least one container
    - all volumes not used by at least one container
    - all images without at least one container associated to them
    - all build cache

https://docs.docker.com/engine/reference/commandline/system_prune/#extended-description


1
Однако на самом деле не освобождает все дисковое пространство.
lucian303

@ lucian303 этот подход восстанавливает дисковое пространство. Может быть, вы столкнулись с определенной проблемой.
Роберт

Кажется, я получаю желаемый результат только тогда, когда я делаю это и шаги в ответе
@techtabu

32

Чтобы просто все очистить, сделайте:

$ docker system prune --all

Все означает:

  • все остановленные контейнеры
  • все сети не используются хотя бы одним контейнером
  • все изображения без одного связанного с ними контейнера
  • весь кеш сборки

26

docker image prune -a

Удалите все неиспользуемые изображения, а не только свисающие. Добавить -fопцию, чтобы заставить.

Локальная версия докера: 17.09.0-ce, Git commit: afdb6d4, OS / Arch: darwin / amd64

$ docker image prune -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker image prune [OPTIONS]

Remove unused images

Options:
  -a, --all             Remove all unused images, not just dangling ones
      --filter filter   Provide filter values (e.g. 'until=<timestamp>')
  -f, --force           Do not prompt for confirmation
      --help            Print usage

7

Простые и удобные команды

Удалить все изображения

docker rmi $(docker images -a)

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

docker rm $(docker ps -a -f status=exited -q)

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

docker rm $(docker ps -a -f status=created -q)

ПРИМЕЧАНИЕ: удалите все контейнеры, затем удалите изображения


чтобы удалить все изображения, следует указать - "docker rmi $ (docker images -a -q)". -q возвращает только идентификаторы изображений
Джимми М.Г. Лим

это означает, что он удалил эти изображения. Еще раз
Deep Nirmal

3

Чтобы удалить все изображения:

docker rmi -f $(docker images -a | awk {'print $3'})

Объяснение:

докер изображения -a | awk {'print $ 3'}

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


3

Удалить без вызова докера :

rm -rf /var/lib/docker

Это не рекомендуется, если вы можете запустить Docker в обычном режиме, но если по каким-либо причинам вы не можете или не хотите, это будет работать.


2

Вы можете попробовать так:

docker system prune

В моем случае это приведет к удалению тома, который я все еще использую. Не используйте это, если вы не знаете, что он делает
Зак Смит

2

Чтобы удалить все изображения:

docker rmi $(docker images -a -q)

где -a это все, а -q возвращает только идентификаторы изображений

Чтобы удалить неиспользуемые изображения и контейнеры:

docker system prune

будьте осторожны, как будто вы используете Docker Swarm, и ваш локальный компьютер присоединяется к удаленному Swarm (как менеджер / работник), ваш локальный компьютер будет развернутым репо. выполнение этого, таким образом, удаляет развернутые образы.


2
docker rmi $(docker images -q) --force

2
Вы должны добавить какое-то объяснение, оставляя ответ в сообщении, чтобы другие, находящие его позже, могли его понять.
Morphyish

1

Добавление к общепринятому ответу Techtabu: Если вы используете Docker в Windows, вы можете использовать следующую команду

for /F "delims=" %A in ('docker ps -a -q') do docker rm %A

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

см. это для более подробной информации о том, как этот тип командного формата работает в Windows cmd.


1

Еще один способ с xargs

docker image ls -q | xargs -I {} docker image rm -f {}

0

Чтобы удалить все локальные изображения Docker Docker, выполните 2 шага:

шаг 1: изображения докера (перечислите все изображения докера с идентификаторами)

     example :
     REPOSITORY    TAG    IMAGE ID            CREATED             SIZE
     pradip564/my  latest 31e522c6cfe4        3 months ago        915MB

шаг 2: образ докера rm 31e522c6cfe4 (ИД ИЗОБРАЖЕНИЯ)

      OUTPUT : image deleted
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.