я пытаюсь
docker rmi c565603bc87f
Ошибка:
Ошибка от демона: конфликт: невозможно удалить c565603bc87f (нельзя принудительно) - изображение имеет зависимые дочерние изображения
Поэтому я не могу удалить изображение даже с флагом -f. Как удалить изображение тогда и всех его детей?
Версия для Linux и докера:
uname -a Linux goracio-pc 4.4.0-24-generic # 43-Ubuntu SMP Ср 8 июня 19:27:37 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux
версия докера Клиент: версия: 1.11.2 версия API: 1.23 версия Go: go1.5.4 Git commit: b9f10c9 Построен: ср 1 июн 22:00:43 2016 OS / Arch: linux / amd64
Сервер: Версия: 1.11.2 Версия API: 1.23 Версия Go: go1.5.4 Git commit: b9f10c9 Построен: Ср 1 Июн 22:00:43 2016 OS / Arch: linux / amd64
docker
docker-image
Римский
источник
источник
Ответы:
Вы должны попытаться удалить ненужные изображения перед удалением изображения:
После этого запустите:
источник
prune
> "docker rmi" requires at least 1 argument.
--filter=dangling=true
. Если вы по-прежнему получаете эту ошибку, это просто означает, что у вас нет висячих изображений, и поэтому команда in-set оценивается как пустая строка.В некоторых случаях (как в моем случае) вы можете пытаться удалить изображение , указав идентификатор изображения с несколькими тегами, которые, как вы понимаете, не существуют, некоторые из которых могут использоваться другими изображениями. В этом случае вы можете не захотеть удалить изображение .
Если у вас есть случай избыточных тегов, как описано здесь, вместо
docker rmi <image_id>
использованияdocker rmi <repo:tag>
избыточного тега вы хотите удалить.источник
docker rmi <repo:tag>
работал для меня. Ваше решение довольно простое среди этих ответов, спасибо.Untagged: drud/ddev-webserver:20200301_leymannx_apache-junk-built
repo:tag
поскольку он создает восемь изображений с тегами, которые имеют только два идентификатора изображения. Даже Visual Studio не удалит их в своем окне управления контейнерами ...docker rmi <repo:tag>
только снимает метки , она не обязательно удаляет изображение. Если существует более одного тега, ссылающегося на это изображение, или если существует другая проблема, например, та, которая указана в OP, изображение все равно будет там. Вы можете проверить, что изображение все еще существует с помощью командыdocker images ls --all
.все предыдущие ответы верны, но вот одно из решений, которое просто принудительно удаляет все ваши изображения ( используйте эту команду на свой страх и риск, она удалит все ваши изображения )
источник
docker image rm $(docker image ls -a -q) -f
найдите идентификатор изображения и идентификатор родителя для всех изображений, созданных после рассматриваемого изображения, с помощью следующего:
Затем вы вызываете команду:
«sub_image_id» - это идентификатор зависимого изображения
источник
Что мне работало, так это использование комбинации РЕПОЗИТОР: TAG, а не ID ИЗОБРАЖЕНИЯ.
Когда я попытался удалить образ докера с помощью команды
docker rmi <IMAGE ID>
без контейнеров, связанных с этим образом, у меня появилось сообщение:Я мог удалить с успехом, когда я использовал команду
docker rmi RPOSITORY:TAG
источник
docker rmi 93fd78260bd1
не удалось, но затемdocker tag 93fd78260bd1 ubuntu:temp && docker rmi ubuntu:temp
был успешным.Untagged: ubuntu:18.04v1
). Если вы это сделаетеdocker images -a
, вы, вероятно, увидите3f66bec2c6bf
еще в списке. Если изображение было действительно удалено, вы получите сообщениеDeleted: 3f66bec2c6bf
ЭТА КОМАНДА УДАЛЯЕТ ВСЕ ИЗОБРАЖЕНИЯ (ИСПОЛЬЗУЙТЕ С ОСТОРОЖНОМ)
Вы пытались использовать --force
Приведенный выше код работает как шарм даже у меня была та же проблема
источник
Ответ здесь заключается в том, чтобы найти всех потомков детей, у которых есть ответ здесь:
Докер, как я могу получить список зависимых дочерних изображений?
Затем используйте это, чтобы удалить дочерние изображения по порядку.
источник
Вот скрипт для удаления изображения и всех изображений, которые зависят от него.
источник
После этого используйте команду, как предложил Нгуен.
источник
Основываясь на методе грубой силы Симона Брейди здесь , если вы не имеете тонну изображений вы можете использовать эту функцию оболочки:
а затем позвоните, используя
recursive_remove_image <image-id>
.источник
Пример:
источник
Когда я хочу удалить неиспользуемое изображение с именем
"<none>"
в докере, я сталкиваюсь с проблемой. Такunable to delete a354bbc7c9b7 (cannot be forced) - image has dependent child images
что для решения этой проблемы:Вы можете видеть, что у меня есть несколько изображений с именем javaapp: последний и другое имя контейнера. Итак, я убил и удалил весь контейнер контейнера "javaapp: latest":
затем
Так что я могу удалить все изображения с именем
"<none>"
удачи
источник
Я также получил эту проблему, я мог решить проблему с помощью следующих команд. это может быть причиной, контейнер изображения работает или выход, поэтому перед удалением изображения необходимо удалить контейнер
docker ps -a -f status = exited: эта команда отображает все вышедшие контейнеры, поэтому скопируйте Id контейнера и выполните команды ниже, чтобы удалить контейнер
docker rm #containerId: эта команда удалить контейнер, это может быть проблема, которая упоминает "изображение имеет зависимые дочерние изображения"
Затем попробуйте удалить изображение с помощью команды ниже
Докер rmi #ImageId
источник
У меня была эта проблема, и ни один из коротких ответов здесь не работал, даже на странице, упомянутой @tudor выше. Я думал, что поделюсь здесь, как я избавился от изображений. Мне пришла в голову мысль, что зависимые изображения должны быть> = размера родительского изображения, что помогает идентифицировать его, чтобы мы могли его удалить.
Я перечислил изображения по размеру, чтобы увидеть, могу ли я найти какие-либо корреляции:
Для этого нужно использовать специальное форматирование из докера, чтобы сначала расположить столбец с размером изображения, а затем выполнить сортировку, читаемую человеком, в обратном порядке. Затем я восстанавливаю легко читаемые столбцы.
Затем я посмотрел на
<none>
контейнеры и сопоставил первый в списке с аналогичным размером. Я выполнил простоеdocker rmi <image:tag>
на этом изображении, и все<none>
дочерние изображения пошли вместе с ним.Проблемное изображение со всеми дочерними изображениями на самом деле было чертовым
myrepo/getstarted-lab
изображением, которое я использовал, когда впервые начал играть с докером. Это потому, что я создал новое изображение из первого тестового изображения, которое создало цепочку.Надеюсь, это поможет кому-то еще в какой-то момент.
источник
Предположим, у нас есть Dockerfile
Мы строим образ из этого без TAG или именования
Теперь у нас есть отчет об успехе «Успешно построенный 57ca5ce94d04». Если мы видим образ докера
Нам нужно сначала удалить
docker rmi 57ca5ce94d04
С последующим
По этому изображению будут удалены!
Принудительное удаление всего, как это было предложено кем-то
источник
Расширяя ответ, предоставленный @Nguyen - эта функция может быть добавлена в ваш
.bashrc
etc и затем вызвана из командной строки, чтобы помочь устранить любыеimage has dependent child images
ошибки ...Вы можете запустить функцию как вы сами, и в случае
docker ps
сбоя она запуститdocker
командуsudo
и запросит у вас пароль.Есть ли НЕ удалять изображения для любых запущенных контейнеров!
У меня также есть это в моем
.bashrc
файле ...Работает с:
источник
Принудительное удаление списка изображений (исключая, например, версию 10)
источник
Вы можете просто сделать это:
➜ ~ Судо докер RMI 4ed13257bb55 -f Исключено: sha256: 4ed13257bb5512b975b316ef482592482ca54018a7728ea1fc387e873a68c358 Исключено: sha256: 4a478ca02e8d2336595dcbed9c4ce034cd15f01229733e7d93a83fbb3a9026d3 Исключено: sha256: 96df41d1ce6065cf75d05873fb1f9ea9fed0ca86addcfcec7722200ed3484c69 Исключено: sha256: d95efe864c7096c38757b80fddad12819fffd68ac3cc73333ebffaa42385fded
источник
Слой изображения: хранилища часто называют изображениями или изображениями-контейнерами, но на самом деле они состоят из одного или нескольких слоев. Слои изображений в репозитории связаны друг с другом в родительско-дочерних отношениях. Каждый слой изображения представляет изменения между собой и родительским слоем.
Шаблон построения докера использует наследование . Это означает, что версия
i
зависит от версииi-1
. Таким образом, мы должны удалить версию,i+1
чтобы иметь возможность удалить версиюi
. Это простая зависимость.Если вы хотите удалить все изображения, кроме последнего (наиболее обновленного) и первого (базового), мы можем экспортировать последнее (наиболее обновленное) с помощью
docker save
команды, как показано ниже.Затем удалите все изображения, используя идентификатор изображения, как показано ниже.
Теперь загрузите сохраненное изображение TGZ, как показано ниже.
посмотрите идентификатор вашего загруженного изображения, используя docker ps -q. У него нет тега и имени. Вы можете просто обновить тег и имя, как сделано ниже.
источник