删除容器意味着什么?

时间:2019-06-27 18:30:28

标签: docker containers

我正在弄脏Containers和Docker。在Docker的世界(或一般来说在Container的世界)中,我试图理解“删除容器”的含义。我对容器的思维模型是它是图像的运行实例。如果容器已停止执行,则需要消耗哪些资源才能释放?我可以理解删除关联的映像会消耗磁盘空间,因此我可以理解。也许我对容器的思维模型是“正在运行的图像实例”,这是不正确的,而且还有更多。如果有人可以阐明一些想法,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您快到了。 在Docker中,当运行容器时,docker守护程序使用unionfs挂载映像层。它在图像层的顶部添加了一层,以跟踪该容器内部发生的更改。假设写入了一个日志文件,该文件作为该层的一部分被跟踪。

通过删除容器,您将删除用于跟踪容器在图像顶部进行的这一层更改的资源。

容器运行时会消耗CPU,内存和与此层关联的HDD空间。

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

当卸下停止的容器时,HDD空间也会被释放。 当您删除容器时,Docker还会删除与该容器关联的所有元数据(启动时,文件所在的位置等)。

要对此有更多的乐趣,请执行以下操作:

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

docker inspect <containerid>并查看其输出,此处containerid应该是运行上述图片的容器。看看是否可以找出图层并在图像和容器中交叉关联它们。