Подтвердить что ты не робот

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
4b9b3361

Ответ 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 {} \;