无法删除Docker映像,“没有此类映像”

时间:2018-10-15 11:14:09

标签: 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

所以我从nginx开始:

$ docker image rm nginx
Untagged: nginx:latest
Untagged: nginx@sha256:9ad0746d8f2ea6df3a17ba89eca40b48c47066dfab55a75e08e2b70fc80d929e
Deleted: sha256:be1f31be9a87cc4b8668e6f0fee4efd2b43e5d4f7734c75ac49432175aaa6ef9
Deleted: sha256:7609c40a03b852382a43d79231d9d4ca7661cd1ac9edcb46f78a44fff4ed59ca
Deleted: sha256:a2b6968c4326640dd5e9e22ddf6cebb61ba1a4b79a4ac8d194f93000c5a4c3e2
Deleted: sha256:8b15606a9e3e430cb7ba739fde2fbb3734a19f8a59a825ffa877f9be49059817

它消失了吗?

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

到目前为止,一切都很好。现在mongo

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

为什么这个没用?

最后,我发现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,但都没有成功。

3 个答案:

答案 0 :(得分:2)

  

如以下线程中所述-   https://stackoverflow.com/a/23736802/10488199

图像实例称为容器。您有一张图像,该图像是您描述的一组图层。如果启动此映像,则该映像具有正在运行的容器。您可以有多个运行中的同一图像容器。 您可以看到带有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>

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

以您的情况

使用-> $ docker images rm mongo:3.4

答案 1 :(得分:0)

泊坞窗中映像的“名称”是存储库和ID的组合-这就是docker image ls中显示的内容。

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

如果仅提供存储库的名称-在这种情况下为“ mongo”,则docker假设您要删除为此存储库标记为“最新”的映像。 现在,由于在您的示例中,只有一个标记为“ mongo:3.4”的图像,但是没有一个名为“ mongo:latest”的图像,所以此方法不起作用。

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

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

答案 2 :(得分:0)

如果您使用代理,请尝试

$ docker image rm your-proxy:port/image-name

$ docker image rm -f your-proxy:port/image-name