【问题标题】:"docker images" shows image, "docker rmi" says "no such image" or "reference does not exist"“docker images”显示图像,“docker rmi”表示“没有这样的图像”或“参考不存在”
【发布时间】:2018-03-05 01:07:17
【问题描述】:

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

操作系统版本:

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

可能是什么原因以及如何删除这些图像?

【问题讨论】:

  • (为了搜索引擎的完整性)从 docker-engine(版本 1.13.x)更新到更新的 docker CE 版本(17.06.02-ce)后,这同样发生在我身上。 Tarun Lalwani answer (stop -> sudo rm -rf /var/lib/docker -> start) 也修复了它。

标签: linux docker


【解决方案1】:

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

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

这将在没有任何现有数据的情况下重新启动 docker。尝试在此之后删除图像,看看是否一切正常。如果没有,那么有一些问题需要调查

【讨论】:

  • 我在从 1.12.6 升级到 18.02 后遇到了这个问题......您的解决方案解决了这个问题(systemd 上的“sudo systemctl stop docker”)
  • 这是为我做的,虽然知道你在做什么,但这会删除 docker 、 networks 、 swarms 、 stacks 等中的所有内容。
【解决方案2】:

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

如果这些仍然列出,请重新启动您的 docker 守护程序。

【讨论】:

  • 不,它不起作用。我也尝试运行docker inspect hello-world 并得到Error: No such object: hello-world
  • @RidgeA 但是docker image prune -a 是否返回任何错误消息?重新启动 docker 守护程序后,这些图像是否仍然存在。
  • 是的,它们还在那里。我什至重新启动了 PC :(docker image prune -a WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? [y/N] y Total reclaimed space: 0B
  • @RidgeA 你在 Linux 主机上看到 /var/lib/docker/images 了吗?
  • 是的! docker image prune -a 终于清理了图片占用的所有额外空间,否则rmi
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2018-12-08
    • 2016-09-24
    • 2022-07-22
    • 2015-02-05
    • 2020-03-09
    • 2021-05-28
    • 2019-09-14
    • 1970-01-01
    • 2018-07-20
    相关资源
    最近更新 更多