首页 > 解决方案 > 删除容器是什么意思/做什么?

问题描述

我正在使用 Containers 和 Docker 弄脏我的手。在 Docker 的世界(或一般的容器世界)中,我试图理解“移除容器”的含义。我对容器的心智模型是它是图像的运行实例。如果一个容器已经停止执行,它消耗了哪些资源需要释放?我可以理解删除相关图像,因为它们会占用磁盘空间。也许我将容器作为“图像的运行实例”的心智模型是不正确的,而且还有更多。如果有人能提供一些启示,我将不胜感激。

标签: dockercontainers

解决方案


你快到了。在 Docker 中,当容器运行时,docker 守护进程使用 unionfs 挂载镜像层。它在图像层之上添加了一个层来跟踪该容器内部发生的变化。假设写入的日志文件作为该层的一部分进行跟踪。

通过删除容器,您可以删除用于跟踪容器在图像之上所做的这一层更改的资源。

当容器运行时,它会消耗与该层相关的 CPU、内存和 HDD 空间。

当容器停止时,CPU 和内存被释放,但硬盘空间仍然被使用。(您可以使用 来检查已停止的容器docker ps -a;这将向您显示所有州的所有容器)

当一个停止的容器被移除时,硬盘空间也被释放。当您删除容器时,Docker 还会删除与容器关联的所有元数据(启动时间、文件所在位置等)。

要获得更多乐趣,请执行以下操作:

docker inspect <image_name>:<tag>并查看其输出。

docker inspect <containerid>看看它的输出,这里的 containerid 应该是一个从上面的图像运行的容器。看看你是否能弄清楚这些层并在图像和容器中交叉关联它们。


推荐阅读