Як видалити всі локальні зображення Docker


264

Нещодавно я почав використовувати Docker і ніколи не зрозумів, що я повинен використовувати docker-compose downзамість ctrl-cабо docker-compose stopпозбутися своїх експериментів. Зараз у мене місцева кількість великої кількості непотрібних зображень докера.

Чи є прапор, який я можу запустити, щоб видалити всі локальні зображення і контейнери докера?

Щось на зразок - всіх docker rmi --all --forceпрапор не існує, але я шукаю щось із подібною ідеєю.



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

З xargs:docker image ls -q | xargs -I {} docker image rm -f {}
аркадит

@muthukumarhelius Я думаю, ти маєш на увазі docker image prune(зображення є сингулярним, воно замість чистки).
Andrés Mejía

Відповіді:


530

Щоб видалити всі контейнери, включаючи його обсяги,

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
Однорядковий варіант для powerhell:docker images -a -q | % { docker image rm $_ -f }
CodeStix

4
Я, мабуть, сюди приходив 100 разів. Дякуємо, що написали цю відповідь!
Аджай Мейті

「Docker rmi -f $ (docker images -a -q)」 справжній badass
Sinux

176

Використовуйте це, щоб видалити все :

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

31

Щоб просто очистити все, виконайте такі дії:

$ docker system prune --all

Все означає:

  • всі зупинені контейнери
  • всі мережі, що не використовуються щонайменше одним контейнером
  • всі зображення без принаймні одного контейнера, пов’язаного з ними
  • всі кеш-пам'ять

25

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 повертає просто ідентифікатори зображень
Jimmy MG Lim

це означає, що вони видалили ці зображення. Перевірте ще раз
Deep Nirmal

3

Щоб видалити всі зображення:

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

Пояснення:

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

Ця команда поверне всі ідентифікатори зображення, а потім буде використана для видалення зображення за допомогою його id.


3

Видалити, не викликаючи докер :

rm -rf /var/lib/docker

Це не радиться, якщо ви можете запустити докер нормально, але якщо з будь-яких причин ви не можете чи не хочете, це спрацює.


2

Ви можете спробувати так:

docker system prune

У моєму випадку це видалить об'єм, який я досі використовую. Не використовуйте це, якщо ви не знаєте, що це робить
Зак Сміт

2

Щоб видалити всі зображення:

docker rmi $(docker images -a -q)

де -a все, і -q - повернення лише ідентифікаторів зображень

Щоб видалити невикористані зображення та контейнери:

docker system prune

будьте обережні, ніби ви використовуєте докерський рій, і ваша локальна машина приєднується до віддаленого рою (як менеджер / працівник), ваша локальна буде розгорнутою репо. виконавши це, таким чином, видаляються розгорнуті зображення.


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

2
Ви повинні додати деякі пояснення, залишаючи відповідь у дописі, щоб інші, хто її знайшов пізніше, могли зрозуміти.
Морфіш

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.



0

Щоб видалити всі локальні зображення Docker, виконайте два кроки ::

крок 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.