Docker镜像无法删除,“没有这样的图像”

Docker image can't be deleted, “no such image”

好吧,我是Docker的新成员,正在做一些教程,我想删除nginxmongo图像:

1
2
3
4
$ docker image ls
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
nginx                latest              be1f31be9a87        12 days ago         109MB
mongo                3.4                 598e8cf490a6        12 days ago         361MB

所以我从nginx开始:

1
2
3
4
5
6
7
$ docker image rm nginx
Untagged: nginx:latest
Untagged: nginx@sha256:9ad0746d8f2ea6df3a17ba89eca40b48c47066dfab55a75e08e2b70fc80d929e
Deleted: sha256:be1f31be9a87cc4b8668e6f0fee4efd2b43e5d4f7734c75ac49432175aaa6ef9
Deleted: sha256:7609c40a03b852382a43d79231d9d4ca7661cd1ac9edcb46f78a44fff4ed59ca
Deleted: sha256:a2b6968c4326640dd5e9e22ddf6cebb61ba1a4b79a4ac8d194f93000c5a4c3e2
Deleted: sha256:8b15606a9e3e430cb7ba739fde2fbb3734a19f8a59a825ffa877f9be49059817

它消失了吗?

1
2
3
$ docker image ls
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
mongo                3.4                 598e8cf490a6        12 days ago         361MB

到现在为止,一直都还不错。现在,对于mongo来说:

1
2
$ docker image rm mongo
Error: No such image: mongo

为什么这个不起作用?

最后,我发现docker image rm 598e8cf490a6确实删除了mongo图像,但我仍然不明白为什么这不起作用。

  • 第一列是什么,REPOSITORY?这是图像名还是其他什么?
  • 如果是图像名,那么为什么我不能用docker image rm mongo删除mongo图像?
  • 如果不是图像名,那么
  • 这是怎么一回事?
  • 为什么docker image ls显示它而不是图像名?
  • 如何获取实际的图像名称?具体来说是什么?我也尝试过docker image rm mongodbdocker image rm mongo-db,但没有成功。


As explained in the following thread -
https://stackoverflow.com/a/23736802/10488199

图像的实例称为容器。您有一个图像,它是您描述的一组层。如果启动此映像,则会有此映像的运行容器。可以有多个运行中的同一图像的容器。你可以用Docker图像看到你的所有图像,而你可以用Docker PS看到你正在运行的容器(你可以看到所有带有Docker PS-A的容器)。所以图像的运行实例是一个容器。

查看正在运行的容器实例列表

使用->$ docker ps

查看所有容器实例的列表

使用->$ docker ps -a

要查看,拉取的图像列表

使用->$ docker images

删除容器实例(如果容器正在运行)

使用->$ docker kill 。使用->$ docker rm

或者强迫它停下来

使用->$ docker rm -f

删除容器实例(如果容器未运行)

使用->$ docker rm

删除图像

使用->$ docker rmi

使用->$ docker image rm

注意:如果要删除的存储库具有最新的标记,则无需提及它。如果有标签,应该提到。

以你为例

使用->$ docker images rm mongo:3.4


Docker中图像的"名称"是存储库和ID的组合-这是docker image ls中显示的内容。

您也可以在Docker Hub上找到存储库名称,例如:https://hub.docker.com//uu/mongoog/

如果只提供存储库的名称-在本例中为"Mongo",Docker假定您要删除标记为"最新"的图像。现在,因为在您的示例中只有一个标记为"mongo:3.4"的图像,但没有一个标记为"mongo:latest"的图像,所以这不起作用。

您可以通过添加-f标志,例如docker -f rmi mongo强制从一个存储库中删除所有图像。

有关更多信息和示例,请参见官方文档:https://docs.docker.com/engine/reference/commandline/rmi/parent command