Docker --storage-opt 大小与实际容器磁盘使用量的关系

Relationship between Docker --storage-opt size and actual container disk usage

我想为我们的 Docker 容器设置磁盘使用配额,我正在尝试根据当前使用情况确定合理的限制。我的计划是使用 --storage-opt size= 选项来设置限制,但我无法确定要检查 运行 容器的具体内容以了解它们有多少 space当前使用,表示为与我将在 --storage-opt size=.

中设置的内容直接相关的数字

示例:

如果我的容器当前使用 X GB 磁盘 space,并且我想给它一个 Y GB 缓冲区,那么我想设置 --storage-opt size=Z,其中 Z=X+Y

我可以确定 Y 的合理值,但我无法弄清楚要检查 运行 容器的具体内容以获得 X 的当前值。

The docs--storage-opt size= 设置“容器 rootfs 大小”。

如何准确找到 运行 容器的当前 rootfs 大小?

我想可能是运行 du -h -d 0 /在容器里面返回的数字。但是,我对此持怀疑态度,因为这个数字包括安装到主机的非常大的共享数据驱动器的大小,所以它并不是真正特定于容器的。这真的是正确的数字吗,因此我必须在设置安装它的每个容器的大小时配额时包括共享驱动器的大小?我希望不会,因为我真的不在乎这个共享驱动器上存储了多少数据,而且它会随着时间的推移而增长。我只想确保实际容器内的存储量保持较小,并且不会随着时间的推移显着增加。

假设上面的du命令不是我需要的,我应该实际检查什么?

注意:我正在使用带有 xfs 的 overlay2 存储驱动程序作为后备文件系统。

经过更多的测试,我发现了以下内容。我不是 100% 确定它是否适用于所有存储驱动程序,但它似乎在我们的 Docker 环境中以这种方式工作,使用 overlay2 存储驱动程序和 xfs 作为支持文件系统。

--storage-opt size= 选项施加的限制仅限制容器使用的额外存储,不包括 Docker 图像大小或任何外部安装的卷。我发现检查每个容器使用了多少额外存储空间的最简单方法是 docker ps --size 命令。

示例输出:

CONTAINER ID   IMAGE                 COMMAND                CREATED        STATUS          PORTS        NAMES            SIZE
d35144402a2    aspecialdockerimage   "/startmyservice..."   20 hours ago   Up 33 minutes                processing_svc   7.83MB (virtual 11.6GB)

输出中“大小”列中的第一个数字是容器正在使用的额外 space 数量,可以作为 space 容器使用量的指南。容器在确定适当配额时需要。请注意,括号中右侧的“虚拟”数字包括 docker 图像的大小,在选择配额大小时不应考虑。

因此,在我在原始问题中给出的示例中,X 的值将为 7.83MB,如果我想给它额外的缓冲区 (Y) 1.17MB,总共 9MB (Z ),那么我会使用 --storage-opt size=9M