"изображения докеров" показывают изображение, "docker rmi" говорит "нет такого изображения" или "ссылка не существует"

По некоторым причинам я не могу удалить изображение докеров. Вот вывод

Версия ОС:

Linux localhost.localdomain 4.12.13-300.fc26.x86_64 #1 SMP Thu Sep 14 16:00:38 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

версия докера

Client:
 Version:      17.06.2-ce
 API version:  1.30
 Go version:   go1.8.3
 Git commit:   cec0b72
 Built:        Tue Sep  5 20:05:40 2017
 OS/Arch:      linux/amd64

Server:
 Version:      17.06.2-ce
 API version:  1.30 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   cec0b72
 Built:        Tue Sep  5 20:06:58 2017
 OS/Arch:      linux/amd64
 Experimental: false'

У меня нет контейнера:

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED                 STATUS              PORTS               NAMES

и два изображения, которые я хочу удалить:

$ docker images -a
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
gcc                 7.1.0               855a4f4d1cd9        2 months ago        1.64GB
hello-world         latest              1815c82652c0        3 months ago        1.84kB

Мои попытки:

$ docker rmi -f gcc:7.1.0
Error response from daemon: No such image: gcc:7.1.0

$ docker rmi -f 855a4f4d1cd9
Error response from daemon: reference does not exist

$ docker rmi -f hello-world:latest 
Error response from daemon: No such image: hello-world:latest

$ docker rmi -f 1815c82652c0
Error response from daemon: reference does not exist44

Какая причина может быть и как я могу удалить эти изображения?

Ответ 1

Это означает, что ваше состояние докера повреждено, и вам нужно очистить полное состояние

sudo service docker stop
sudo rm -rf /var/lib/docker
sudo service docker start

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

Ответ 2

Попробуйте сначала docker image prune или даже снимите снимок docker image prune -a, чтобы удалить любое изображение, не использовавшееся/не связанное, по крайней мере, с одним контейнером.

Если они все еще перечислены, перезапустите демон своего докера.

Ответ 3

Чтобы избежать удаления всех данных докера и начать с нуля, вы также можете попытаться вручную очистить битые ссылки, сопоставив /var/lib/docker/image/devicemapper/imagedb/content/sha256 ссылки на изображения с файлами в /var/lib/docker/image/devicemapper/imagedb/content/sha256, Как только соответствующий файл будет удален, он больше не будет отображаться при последующих вызовах docker images, и перезапуск демона не требуется.