Невозможно удалить изображение из-за ошибки: Ответ об ошибке от демона: ссылка не существует

У меня возникла странная проблема при попытке очистить образы, созданные Docker. Вот что я сделал:

  • Удалить все контейнеры

    $ docker rm $(docker ps -a -q)
    bb3927e956bf
    3e2eeb6287c4
    
  • Проверьте, запущен ли какой-либо контейнер или создан после:

    $ docker ps -a
    CONTAINER ID    IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES
    
  • Удалить все изображения: первая попытка не удалась, так как были ссылки на изображения

    $ docker rmi $(docker images -q)
    Error response from daemon: conflict: unable to delete 2f21ea981017 (must be forced) - image is referenced in one or more repositories
    Error response from daemon: conflict: unable to delete 2f21ea981017 (must be forced) - image is referenced in one or more repositories
    
  • Удалите все изображения, используя опцию -f:

    $ docker rmi -f $(docker images -q)
    Untagged: dev-php55:latest
    Untagged: reynierpm/dev-php55:latest
    Deleted: sha256:2f21ea981017f65adcf0df3764756690adc35d80538bbb6dcada12990f589f37
    Deleted: sha256:7fbddc1aa50dca9bdf4f8c8033d20eca26ac00432f57333987c0eac3fe55fb08
    Deleted: sha256:15883aeb774feafa64328ea2e77ebbe17a91e79ca1cd8bb2eebca60802fb01f5
    Deleted: sha256:36ff96a995807763e302657eaeb671c000e58e3128a47f63bae543ba501387ed
    Deleted: sha256:053f436f01f809f60ecba9fb961dfb6404dce163f84fbd905eb47a6b436ba50d
    Deleted: sha256:b4525a37a105a199b7e7772de9e6ad86af645509c94c705bd13fbd422bf8f55d
    Deleted: sha256:228092e34fffbb9def7f883eceea9f37fce3750d7a7d5a7551ce009410567240
    Deleted: sha256:a17ed03e91cc4bef074258f731bba0945bcacc78c7ac9f00d88ca111125c94c0
    Deleted: sha256:6118ff18e2049d3e13a903c4163e4e4aceea9fdd30555bdd71a1e23e8d5aa022
    Deleted: sha256:b7347848822645efd3259a6c200a94c7bba15fc72b504c704e39f5db0cdca1a2
    Deleted: sha256:b23b831be841f1f3cececec3e52480723d8312b464d9a89957e867fa695a4eca
    Deleted: sha256:86c4c6d54d9dee52f8abe0ba8b3622b985bce68923dada61838b45860f000f44
    Deleted: sha256:f053241f28e7c62ac77b44ee2f69a7bd6d2bb2ccdd9f916e43b8af88f5865f90
    Deleted: sha256:3f36e15d9aac3c197472d66904fc59bd509ca36c8aa885165aadc6507f27126c
    Deleted: sha256:6586309b23369f2ccb067ca456ebacd1602787960215d7c2e898c28ae6a2e78d
    Deleted: sha256:43d7779d3bcd75a466df309735762f33552c2caf8f656ce1e26e1fd6b0324c49
    Deleted: sha256:9e060bbbad0c042fc45eb52d3e4c41bfd30fb620459f10c62cf7e483d514e1d8
    Deleted: sha256:9da9f4caedc27c128dc51d273f9d1411d6fce3f560c606fff0567d912d2d95e4
    Error response from daemon: No such image: 2f21ea981017:latest
    Error response from daemon: reference does not exist
    

Затем появляется эта ошибка: No such image: 2f21ea981017:latest, и я должен спросить, почему? Где такое изображение? Есть какая-то внутренняя БД для Docker, где он хранит информацию?

После того, как я запустил все предыдущие команды, я запускаю следующую и замечаю вывод:

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04.5             b1719e1db756        3 days ago          187.9 MB

Но затем я снова попытался удалить изображения, запустив

$ docker rmi b1719e1db756
Error response from daemon: reference does not exist

И у меня такая же ошибка, что мне здесь не хватает? Как я могу это исправить?

Я должен добавить, что я также запускал команды из этот пост но безуспешно.


person ReynierPM    schedule 23.09.2016    source источник
comment
к вашему сведению. Ссылаясь на ответ об ошибке из-за удаления изображений с несколькими тегами (на изображение есть ссылка в одном или нескольких репозиториях), это также открытая проблема здесь github.com/meltwater/docker-cleanup/issues/19   -  person Ruifeng Ma    schedule 27.02.2017


Ответы (2)


Я столкнулся с этой проблемой на docker-ce 17.06/fedora 26. Я не думаю, что вам нужно удалять docker, но эти команды удалят все ваши образы. Поэтому сохраните все изображения, которые вам действительно нужны, удалите все и восстановите резервную копию;

sudo systemctl stop docker.service
sudo rm -rf /var/lib/docker
sudo systemctl start docker.service
person Bright Fan    schedule 15.07.2017
comment
Окончательное решение для избавления от поврежденной базы данных докеров, которая, к сожалению, иногда возникает. Однажды в 2017 году я загрузил образ MySQL размером 400 МБ в виртуальную машину CentOS 7 с помощью docker-ce V17. Три года спустя я заметил, что больше не могу удалить этот образ ни одним из предоставленных инструментов и опций, поэтому единственным оставшимся решением было стереть каталог /var/lib/docker. - person Andi Hafner; 12.05.2020

Я отвечу сам себе после некоторых исследований и большой помощи от людей, стоящих за Docker в Github.

Вывод: сначала я устанавливаю докер, выполнив следующую команду:

$sudo dnf install docker -y

Этот установленный докер из форка RedHat и, следовательно, версия была: 1.10.3, затем, используя эту версию, я создал образ, который до сих пор вызывал проблемы. После сборки образа я удаляю docker 1.10.3 версию и переключаюсь на docker-engine, которая является официальной, и устанавливаю 1.12.1.

Проблема: я пытался удалить образ, созданный в докере 1.10.3, но используя докер 1.12.1, и отсюда возникла проблема.

Решение: удалить docker-engine и установить временную docker, чтобы удалить образы, созданные под такой версией.

  • Удалить докер-движок: dnf remove docker-engine
  • Установить докер: dnf install docker
  • Удалить изображения: docker rmi -f $(docker images -q)
  • Удалить докер: dnf remove docker
  • Установить докер-движок: dnf install docker-engine
  • Создание изображений с нуля

Примечание. по какой-то причине после выполнения всех шагов, как показано выше, я столкнулся со следующей проблемой:

$docker images
Error response from daemon: client is newer than server (client API version: 1.24, server API version: 1.22)

Выполнение dnf autoremove && dnf clean all и перезапуск docker устраняют проблему.

Не стесняйтесь заглянуть здесь, если хотите узнать больше.

person ReynierPM    schedule 26.09.2016
comment
Отличное решение! мой удалил папку /var/lib/docker. - person pbacterio; 11.07.2017