У меня есть следующие изображения:
alex@alexvps:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 70c0e19168cf 5 days ago 1.069 GB
<none> <none> c2ce80b62174 8 days ago 399.2 MB
<none> <none> 60afe4036d97 8 days ago 325.1 MB
и когда я пытаюсь удалить один из них, я получаю:
alex@alexvps:~$ sudo docker rmi 60afe4036d97
Error: Conflict, 60afe4036d97 wasn't deleted
2014/01/28 00:54:00 Error: failed to remove one or more images
Как я могу удалить их? Почему такой конфликт?
docker images -q | %{docker rmi -f $_}
sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}
docker ps -a -q | %{docker rm -f $_}
docker system prune
. Таким образом, чтобы стереть все:docker kill $(docker ps -q)
чтобы остановить контейнеры, а затемdocker system prune -a
удалит все - см. Stackoverflow.com/a/44309011/247708Возможная причина: причиной может быть то, что это изображение в настоящее время используется работающим контейнером. В этом случае вы можете просмотреть список запущенных контейнеров, остановить соответствующий контейнер и затем удалить изображение:
Если вы не можете найти контейнер с помощью Docker PS, вы можете использовать это, чтобы вывести список всех уже вышедших контейнеров и удалить их.
Примечание: будьте осторожны, удаляя все вышедшие контейнеры сразу, если вы используете
Volume-Only
контейнеры. Они остаются вExit
состоянии, но содержат полезные данные .источник
sudo docker ps -a | grep Exit | awk '{print $1}' | sudo xargs docker rm
(благодаря github.com/dotcloud/docker/issues/3258 ), а затем сsudo docker rmi 70c0e19168cf
Exit
состоянии. Если вы используете контейнеры только для тома данных, они не будут работать.awk '/Exit/ {print $1}'
Error response from daemon: No such container: ...
. Трудно сказать, что нужно заменить, а что заменить. Не используйте...
Причина ошибки заключается в том, что, хотя у изображения не было тега, на этом изображении все еще существует контейнер, который может находиться в
exited
состоянии. Поэтому вам необходимо убедиться, что вы остановили и удалили все контейнеры, созданные на этих изображениях. Следующая команда поможет вам удалить все контейнеры, которые не запущены:Теперь это удаляет все висящие не промежуточные
<none>
изображения:источник
В настоящее время изображение может использоваться работающим контейнером, поэтому сначала необходимо остановить и удалить контейнеры.
Тогда вы можете попробовать удалить изображение:
Вы должны быть уверены, что это изображение не зависит от других изображений (в противном случае вы должны сначала удалить их).
У меня был странный случай, когда у меня больше не осталось контейнеров (
docker ps -a
ничего не возвращалось), но я не смог удалить изображение и его зависимость от изображения.Чтобы решить эти особые случаи, вы можете принудительно удалить изображение:
источник
В Баш:
Это удалит все изображения с именем «<none>». Я нашел эти изображения излишними.
источник
docker images|grep \<none\>|awk '{print $3}' | xargs docker rmi
, ей может потребоватьсяsudo
разрешениеЯ нашел ответ в этой команде:
У меня была ваша проблема, когда я удалил некоторые изображения, которые были использованы, и я не понял (использование
docker ps -a
).источник
Так как Docker вер. 1.13.0 (январь 2017) есть
system prune
команда:источник
В дополнение к ответу Санни:
Чтобы удалить все изображения на компьютере Windows (с Docker для Windows) в окне PowerShell, выполните:
Чтобы удалить все контейнеры на компьютере Windows (с Docker для Windows) в окне PowerShell, выполните:
источник
Сначала удалите все контейнеры, используя следующую команду
Затем удалите изображение по его идентификатору, используя следующую команду
источник
Сначала вы должны остановить / удалить все ненужные контейнеры, созданные на этих изображениях.
Посмотрите: Как удалить старые контейнеры Docker .
После этого используйте решение @marcell.
источник
Удалить все контейнеры
Принудительно удалить все изображения Docker
источник
Просто вы можете добавить
--force
в конце команды. Подобно:Чтобы сделать его более интеллектуальным, вы можете добавить как:
Здесь в
docker ps
$ 1 находится первый столбец, т.е. идентификатор контейнера Docker.И
docker images
$ 3 - третий столбец, то есть идентификатор изображения Docker.источник
Наиболее компактная версия команды для удаления всех непомеченных изображений:
источник
Для удаления образа Docker необходимо выполнить следующую команду:
Итак, чтобы удалить все образы Docker, вы можете выполнить следующую команду:
Теперь, если вы хотите удалить все изображения Docker (включая изображения, которые используются), вы можете добавить флаг
-f
, например:источник
использование
или
Удалите все висящие изображения. Если
-a
указан, он также удалит все изображения, на которые не ссылается ни один контейнер.Примечание: вам будет предложено подтвердить, прежде чем чернослив удаляет что-либо, но вам не показывают список того, что может быть удалено. Кроме того,
docker image ls
не поддерживается негативная фильтрация, поэтому сложно предсказать, какие изображения будут фактически удалены.Как указано в документации Докера для чернослива .
источник
Если вы хотите автоматически / периодически очищать закрытые контейнеры и удалять изображения и тома, которые не используются запущенным контейнером, вы можете загрузить образ Docker
meltwater/docker-cleanup
.Таким образом, вам не нужно чистить его вручную.
Просто беги:
Он будет запускаться каждые 30 минут (или сколько бы вы ни установили его с помощью опции DELAY_TIME = 1800) и очищать вышедшие контейнеры и изображения.
Более подробная информация: https://github.com/meltwater/docker-cleanup/blob/master/README.md
источник
Я нашел решение с помощью скрипта Powershell, которое сделает это за меня.
Сценарий сначала останавливает все контейнеры, затем удаляет все контейнеры, а затем удаляет изображения, названные пользователем.
Смотрите здесь http://www.devcode4.com/article/powershell-remove-docker-containers-and-images
источник