Docker rmi无法删除图片

所以,我的主机上有一些未加标签的图像。 我用

sudo docker rmi $(sudo docker images | grep "<none>" | awk '{print($3)}')删除这些图像。 执行时,我得到错误

来自守护进程的错误响应:冲突,无法删除31fa814ba25a,因为容器70c20aa2c19f正在使用它,使用-f强制

所以我做了一个

 sudo docker rmi 70c20aa2c19f 

我得到的错误

来自守护进程的错误响应:没有这样的图像:70c20aa2c19f

所以如果ImageID 70c20aa2c19f没有图像,那么为什么最初的删除命令的错误指出存在一个ImageID为70c20aa2c19f的图像?

正如你对问题的评论所表明的那样,你已经发现你需要使用:

  • docker rmi删除图像
  • docker rm删除容器

多一点背景:有一个区别:

  1. docker的形象,
  2. 正在运行的容器基于该图像和
  3. 基于该图像的停止的容器

被停止的容器被保留,因为运行容器可能已经改变了容器中的文件系统,然后你可以提交这个停止的容器来获得一个新的图像。 (这是创build图像的一种方式,手动运行命令并提交产生的​​容器)。

使用docker build和Dockerfile创build图像,它执行Dockerfile命令的容器,并提交结果图像,只标记提交的最后一个图像。

下面的命令对我来说很好,只要继续为所有你想保留的容器添加grep -v 即可

 sudo docker rm -f $(sudo docker ps -a -q | grep -v <good_container_1> | grep -v <good_container_2>) 

该消息告诉一个容器正在使用图像,并且容器停止,但图像仍然与容器相连。 要删除图像,首先需要通过docker rm [Container-ID]删除容器。 之后,通过docker rmi [Image-ID]移除图像docker rmi [Image-ID]

首先,您需要删除属于泊坞窗图像的容器。 在你将删除Docker镜像之后。 我试过了,它的工作正常。