在执行docker rmi xxxxx时,明明已经没有容器使用该镜像了,但是还是无法删除对应镜像。而且重新pull该镜像会发现出现两个相同IMAGE ID的镜像,所以怀疑是残留文件信息导致的该错误。

这时我们通过执行docker rmi 指定镜像名称和版本应该是可以删除其中一个的,剩下的一个不论是执行rmi id 还是 名称都会报No such image。

解决办法是进入/var/lib/docker/image/overlay2目录我们应该会找到一个repositories.json文件,打开这个json文件后删除掉对应镜像的json节点。然后我们需要重启docker,这时我们执行docker images命令应该就能发现我们之前不能删除掉的image 那个id对应的镜像名称和版本都变成<none>了,这时我们再通过docker rmi 刚才那个image id就能成功删除掉这个镜像!