好的,我是 Docker 新手,正在学习一些教程,我想删除 nginx
和 mongo
镜像:
$ 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
?这是图像名称还是其他什么? - 如果是镜像名称,为什么我不能使用
docker image rm mongo
删除mongo
镜像? - 如果不是图像名称,则
- 这是什么?
- 为什么
docker image ls
显示它而不是镜像名称? - 如何获取实际的图像名称?具体是什么?我还尝试了 docker image rm mongodb 和 docker image rm mongo-db 但没有成功。
最佳答案
As explained in the following thread - https://stackoverflow.com/a/23736802/10488199
图像的实例称为容器。您有一个图像,正如您所描述的,它是一组图层。如果启动此镜像,则您将拥有此镜像的正在运行的容器。您可以拥有多个正在运行的同一镜像的容器。 您可以使用 docker images 查看所有镜像,而可以使用 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
关于Docker镜像无法删除, "no such image",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815486/