Docker rmi не может удалять изображения, с: нет такого идентификатора
У меня много изображений. Когда я пытаюсь удалить их с помощью docker rmi
$ sudo docker rmi acd33a9490dc
Error response from daemon: No such id: 75ce1f6710bab109a7d7cbee056fa8a0c7fa913e81c88e2a55121149dda80ee9
2014/07/14 10:13:24 Error: failed to remove one or more images
То, что 75ce1... hash - это то же самое независимо от того, какое изображение докеров я пытаюсь удалить.
В настоящее время ниже приводится текущая версия докера; однако некоторые из этих изображений были вокруг с более ранней версии (0,6 или около того)
$ sudo docker version
Client version: 1.0.1
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 990021a
Server version: 1.0.1
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 990021a
Ответы
Ответ 1
Поместите в терминал:
docker ps -a
CONTAINER ID | IMAGE ......................NAMES
d25c0cd9725a |acd33a9490dc ................focused_einstein
Вы можете увидеть свой IMAGEID в столбце IMAGE. Получите идентификатор контейнера, чтобы удалить контейнер:
docker rm d25c0cd9725a
И теперь вы можете удалить изображение:
docker rmi acd33a9490dc
Ответ 2
Если вам нужно удалить несколько изображений, вы можете удалить все контейнеры с помощью
sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}
Теперь вы можете удалить любые изображения.
Ответ 3
Я думаю, что это ожидаемое поведение, а не ошибка. Это связано с тем, что у вас есть контейнеры, висящие вокруг, которые не были удалены. Эти контейнеры являются экземплярами изображения, и это мешает вам отказаться от этого изображения.
Шаг 1 - удалить неиспользуемые экземпляры контейнера
Оба jripoll answer и ответ Андраса Хатвани показывают способы листинга и удаления контейнеров, которые привязаны к изображения.
Обратите внимание, что последний удалит все экземпляры контейнера!! Итак, если есть тот, который требуется зафиксировать как новое изображение, вы должны сделайте это в первую очередь.
Шаг 2 - удаление ненужных изображений
После того, как контейнеры были удалены, вы сможете удалить все изображения, на которых они были основаны.
Чтобы быстро удалить любые немаркированные контейнеры (те, которые отображаются при <none> <none>
при запуске sudo docker images
), вы можете запустить следующую команду:
sudo docker images -q --filter "dangling=true" | sudo xargs docker rmi
Я сохранил это в /usr/local/bin/docker-purge-dangling
, поэтому я могу запустить его без необходимости запоминать команду.
Ответ 4
Вы также можете столкнуться с этой проблемой, если не удаляете выведенные контейнеры.
Для этого нужно удалить удаленный контейнер,
sudo docker ps -a | grep Exit | awk '{print $1}' | sudo xargs docker rm
Затем удалите свое изображение, используя
sudo docker rmi <imageID>
Ответ 5
Сначала вам нужно найти контейнер с изображением.
Чтобы удалить один контейнер с изображением
docker ps -a
Вы получите такой вывод
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
g7aea2132441 2285ff53ab18 "/bin/bash" 2 days ago tombrider
Затем удалите контейнер, используя
docker rm g7aea2132441
Чтобы удалить все контейнеры и изображения, сделайте
-
Удалите все контейнеры
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
-
Удалите теперь оборванные изображения
docker images -q --filter "dangling=true" | sudo xargs docker rmi
Ответ 6
Искренняя благодарность всем вам.
Я пробовал все ваши подходы, но не смог удалить следующее изображение:
[[email protected]]$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest c54a2cc56cbb 6 months ago 1.848 kB
Мне пришлось удалить его здесь:
sudo rm /var/lib/docker/image/devicemapper/imagedb/content/sha256/c54a2cc56cbb2f04003c1cd4507e118af7c0d340fe7e2720f70976c4b75237dc
Теперь он ушел.
Ответ 7
Итак... некоторые случаи этого, похоже, состоят в том, что у вас есть контейнер с более длительным сроком действия, который ссылается на изображение. Удаление контейнера позволяет удалить изображение.
Но определенно есть ошибка, в которой докер попадает в состояние, где независимо от того, что вы делаете, он не может удалить изображение. Это было исправлено в docker 1.4.0: https://github.com/docker/docker/commit/ac40e7c
Ответ 8
Запуск этой очистки script Я как-то волшебным образом решил это для меня:
# remove orphan containers
docker ps -a | grep -v ":" | awk '{print $1}' | xargs docker rm -f
# remove orphan images
docker images | grep "<none>" | awk '{print $3}' | xargs docker rmi -f
Ответ 9
это приведет к удалению всего вашего контейнера, а затем вы сможете удалить изображения
sudo docker ps -a | awk '{print $1}' | grep -v КОНТЕЙНЕР | xargs sudo docker rm {} \;