docker - 删除容器是什么意思/做什么?

标签 docker containers

我开始接触 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/

相关文章:

linux - 退出后如何重新进入docker容器提示符

docker - 构建tensorflow 2.2.0 pip wheel文件,用于CentOS系统(旧libc)

node.js - 使用来自 Docker 的 env 变量的 React 连接被拒绝错误

html - Div 标签和标题

c++ - 如何删除 STL 容器?

docker - Netflix | Spring Cloud Eureka部署在ECS上时未注册

c# - dotnet 发布时如何更改 dll 名称?

c++ - 仅使用几乎相等的标准(无排序)从容器中删除重复项的最有效方法是什么

c++ - 如何将一组指针转换为一组 const 指针?

docker - 在 docker 容器中使用 systemctl 启动服务