"docker images"显示图像,"docker rmi"表示"没有这样的图像"或"引用不存在"

Rid*_*geA 28 linux docker

由于某些原因,我无法删除docker镜像.这是输出

OS版本:

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
Run Code Online (Sandbox Code Playgroud)

码头版

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`
Run Code Online (Sandbox Code Playgroud)

我没有任何容器:

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED                 STATUS              PORTS               NAMES
Run Code Online (Sandbox Code Playgroud)

和我要删除的两个图像:

$ 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
Run Code Online (Sandbox Code Playgroud)

我的尝试:

$ 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
Run Code Online (Sandbox Code Playgroud)

原因是什么,如何删除这些图像?

Tar*_*ani 41

这意味着您的泊坞窗状态已损坏,您需要清除完整状态

sudo service docker stop
sudo rm -rf /var/lib/docker
sudo service docker start
Run Code Online (Sandbox Code Playgroud)

这将启动docker fresh而不存在任何现有数据.尝试在此之后删除图像,看看是否一切正常.如果没有,那么就有一些问题需要加以研究

  • 从 1.12.6 升级到 18.02 后,我遇到了这个问题......你的解决方案解决了这个问题(systemd 上的“sudo systemctl stop docker”) (3认同)
  • 这为我做到了,尽管知道您在做什么,但这会删除docker,网络,群集,堆栈等中的所有内容。 (2认同)

Von*_*onC 13

首先尝试docker image prune或甚docker image prune -a至尝试删除未使用/未与至少一个容器关联的任何图像.

如果仍然列出了这些,请重新启动docker守护程序.

  • 是的 !`docker image prune -a` 最终清除了图像占用的所有额外空间,否则无法使用 `rmi` (2认同)

tzr*_*rlk 7

为避免删除所有 docker 数据并从头开始,您还可以尝试通过将坏图像引用与/var/lib/docker/image/devicemapper/imagedb/content/sha256. 一旦相应的文件在那里被删除,它将不再出现在对 的后续调用中docker images,并且不需要重新启动守护程序。

  • 路径可能位于``/var/lib/docker/image/overlay2/imagedb/content/sha256``` (2认同)