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

qnt*_*ntm 4 docker

好的,所以我是 Docker 的新手并且正在做一些教程,我想删除nginxmongo图像:

$ docker image ls
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
nginx                latest              be1f31be9a87        12 days ago         109MB
mongo                3.4                 598e8cf490a6        12 days ago         361MB
Run Code Online (Sandbox Code Playgroud)

所以我开始nginx

$ docker image rm nginx
Untagged: nginx:latest
Untagged: nginx@sha256:9ad0746d8f2ea6df3a17ba89eca40b48c47066dfab55a75e08e2b70fc80d929e
Deleted: sha256:be1f31be9a87cc4b8668e6f0fee4efd2b43e5d4f7734c75ac49432175aaa6ef9
Deleted: sha256:7609c40a03b852382a43d79231d9d4ca7661cd1ac9edcb46f78a44fff4ed59ca
Deleted: sha256:a2b6968c4326640dd5e9e22ddf6cebb61ba1a4b79a4ac8d194f93000c5a4c3e2
Deleted: sha256:8b15606a9e3e430cb7ba739fde2fbb3734a19f8a59a825ffa877f9be49059817
Run Code Online (Sandbox Code Playgroud)

过去了吗?

$ docker image ls
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
mongo                3.4                 598e8cf490a6        12 days ago         361MB
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。现在为mongo

$ docker image rm mongo
Error: No such image: mongo
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?

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

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

arm*_*eld 6

如以下线程中所述 - /sf/answers/1661576171/

图像的实例称为容器。您有一个图像,它是您描述的一组图层。如果你启动这个镜像,你就有了一个运行这个镜像的容器。您可以拥有多个运行相同映像的容器。您可以使用 docker 图像查看所有图像,而使用 docker ps 可以查看正在运行的容器(您可以使用 docker ps -a 查看所有容器)。所以一个正在运行的镜像实例就是一个容器。

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

使用 -> $ docker ps

查看所有容器实例的列表

使用 -> $ docker ps -a

查看,拉取的图片列表

使用 -> $ docker images

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

使用 ->$ docker kill <container id/container name> 使用 ->$ docker rm <container id/container name>

或强迫它停止并通过

使用 -> $ docker rm -f <container id/container name>

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

使用 -> $ docker rm <container id/container name>

删除图像

使用 -> $ docker rmi <REPOSITORY:tag/IMAGEID>

或者

使用 -> $ docker image rm <REPOSITORY:tag/IMAGEID>

注意:如果被移除的 REPOSITORY 有最新的标签,则无需提及。如果有标签,应该被提及。

在你的情况下

使用 -> $ docker images rm mongo:3.4


Phi*_*wig 0

docker 中镜像的“名称”是存储库和 ID 的组合 - 这就是docker image ls.

您还可以在 docker hub 上找到存储库名称,例如: https: //hub.docker.com/_/mongo/

如果您仅提供存储库的名称 - 在本例中为“mongo”,docker 会假设您想要删除该存储库标记为“最新”的映像。现在,由于在您的示例中只有一张标记为“mongo:3.4”的图像,但没有名为“mongo:latest”的图像,因此这是行不通的。

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

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