我开始接触 Containers 和 Docker。在 Docker 的世界(或一般的容器世界)中,我试图理解“删除容器”的含义。我对容器的心智模型是它是一个正在运行的图像实例。如果容器停止执行,它消耗了哪些需要释放的资源?我可以理解删除关联的图像,因为它们消耗磁盘空间。也许我将容器视为“图像的运行实例”的心理模型是不正确的,而且还有更多。如果有人能阐明一些观点,我将不胜感激。
最佳答案
你快到了。
在 Docker 中,当容器运行时,docker 守护进程使用 unionfs 挂载图像层。它在图像层之上添加了一个层,以跟踪该容器内发生的变化。假设写入的日志文件作为该层的一部分进行跟踪。
通过删除容器,您可以删除用于跟踪容器在镜像之上所做的这一层更改的资源。
当容器运行时,它会消耗与该层相关的 CPU、内存和 HDD 空间。
当容器停止时,CPU 和内存被释放,但硬盘空间仍在使用。 (您可以使用 docker ps -a
检查已停止的容器;这将显示所有状态的所有容器)
当一个停止的容器被移除时,硬盘空间也会被释放。
Docker 还会在您删除容器时删除与容器关联的所有元数据(启动时间、文件所在位置等)。
要获得更多乐趣,请执行以下操作:docker inspect <image_name>:<tag>
并查看其输出。docker inspect <containerid>
并查看它的输出,这里的 containerid 应该是从上面的图像运行的容器。看看您是否可以找出层并将它们跨图像和容器交叉关联。
关于docker - 删除容器是什么意思/做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56796876/