docker - 正在运行的 Docker 容器何时会耗尽磁盘空间?

标签 docker virtual-machine

我已经阅读了很多文档,但我仍然不确定这到底是如何工作的。这有点像 Docker 与 VM 的问题。

如果我使用 2GB 硬盘驱动器启动虚拟机并用文件填充其磁盘,我知道它会在 2GB 文件后耗尽。

Docker 的工作方式相同吗?我想是这样。但从我读到的有关“UnionFS”的内容来看,它似乎并没有耗尽空间。

那么为什么 Docker“卷”存在呢?是否会以某种方式自动临时扩展 Docker 磁盘空间?重启后,我保存在 Docker 容器中的文件会消失吗?重启容器后怎么样?

最佳答案

Docker 的使用(1.12+)取决于 Docker storage driver以及可能正在使用的物理文件系统。

TL;DR 存储将在所有容器和本地卷之间共享,除非您使用 devicemapper存储驱动程序或已通过 docker run --storage-opt size=X 设置限制当在 zfs 上运行时或btrfs司机。 Docker 1.13+ 还支持配额大小 overlay2xfs上支持的文件系统。

容器

对于所有存储驱动程序,除了 devicemapper ,容器和本地卷存储受到托管底层文件系统的限制/var/lib/docker它的子目录。一个容器可以填满共享文件系统,然后其他容器就无法再写入。

使用 devicemapper 时驱动程序中,默认卷大小 100G 是为每个容器“精简分配”的。可以使用守护进程选项 --storage-opt dm.basesize option 覆盖默认大小。或按每个容器设置 docker run --storage-opt size=2G

相同的每个容器配额支持可用于 zfs btrfs 驱动程序,因为两个文件系统都为创建具有大小或配额的卷提供简单的内置支持。

overlay2 storage driver on xfs supporta per container quotas as of Docker 1.13 。当新的 4.5+ 内核成为标准/通用并且 ext4 和 xfs 配额共享通用 API 时,这可能会扩展到 ext4。

数量

Docker volumes与容器分离,可以将其视为临时容器的持久存储区域。

卷与 Docker 存储分开存储,并且针对不同后端有自己的插件。 local是默认后端,它将数据写入 /var/lib/docker/volumes so 保存在容器存储和可能的配额系统之外。

其他volume plugins如果您想在支持它的本地文件系统上设置每个卷的限制,则可以使用它。

容器将在容器重新启动和重新启动时保留自己的文件状态,直到您 docker rm 容器。卷中的文件将在容器删除后保留下来,并且可以在创建新容器时安装。

关于docker - 正在运行的 Docker 容器何时会耗尽磁盘空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40621886/

相关文章:

Docker 推送 : push image once with multiple tags

node.js - 为什么 dotenv 没有加载到 docker 中,但在主机中运行良好?

Azure 虚拟机预留

java - Android - 使用图像资源背景动态构建 UI 时发生内存泄漏

python - docker 中的 django 迁移权限被拒绝

node.js - 在 Dockerized Node.js 开发环境中处理 node_modules 的干净且实用的方法?

import - 导入虚拟机时出错是 Virtualbox 中的设备

azure - 检查 Azure 虚拟机是否已关闭

Azure应用程序网关多次提示输入凭据(我的应用程序使用Windows Auth)

Windows Server 2016 Docker 镜像支持 SQL Server?