Как удалить все 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 }
techtabu
источник
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

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

  • все остановленные контейнеры
  • все сети не используются хотя бы одним контейнером
  • все изображения без одного связанного с ними контейнера
  • весь кеш сборки
Renatex
источник
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)

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

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

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

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

Объяснение:

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

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

PalFS
источник
3

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

rm -rf /var/lib/docker

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

VasiliNovikov
источник
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
simencore
источник
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 {}
arkadyt
источник
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
Дебасис Дас
источник