我想为 Docker 容器设置磁盘使用配额,并且我试图根据当前使用情况确定合理的限制。我的计划是使用 --storage-opt size=
选项来设置限制,但我无法确定要在正在运行的容器上检查哪些内容以找出它们有多少空间。当前使用的,表示为与我将在 --storage-opt size=
中设置的内容直接相关的数字。
示例:
如果我的容器当前使用 X GB 磁盘空间,并且我想为其提供 Y GB 缓冲区,那么我想设置 --storage-opt size=Z
,其中 Z= X+Y
我可以决定合理的 Y 值,但我无法弄清楚到底要在正在运行的容器上检查哪些内容才能获取 X 的当前值。
The docs假设 --storage-opt size=
设置“容器 rootfs 大小”。
如何准确找到正在运行的容器的当前 rootfs 大小?
我想这可能是在容器内运行 du -h -d 0/
返回的数字。但是,我对此表示怀疑,因为这个数字包括安装到主机的非常大的共享数据驱动器的大小,因此它并不是真正特定于容器的。这真的是正确的数字吗?因此,在设置安装共享驱动器的每个容器的大小配额时,我必须包括共享驱动器的大小?我希望不会,因为我真的不在乎这个共享驱动器上存储了多少数据,而且它会随着时间的推移而增长。我只想确保实际容器内的存储空间保持较小,并且不会随着时间的推移而显着增长。
假设上面的 du
命令不是我需要的,我应该实际检查什么?
注意:我正在使用 Overlay2 存储驱动程序,并以 xfs 作为支持文件系统。
最佳答案
经过更多测试,我发现了以下内容。我不确定它是否对所有存储驱动程序都准确,但它似乎在我们的 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)
输出中“大小”列中的第一个数字是容器正在使用的额外空间量,可用作确定适当配额时容器需要多少空间的指导。请注意,括号右侧的“虚拟”数字包括 docker 镜像的大小,在选择配额大小时不应考虑。
因此,在我最初问题中给出的示例中,X 的值将为 7.83MB,如果我想为其提供 1.17MB 的额外缓冲区 (Y),总共 9MB (Z),那么我会使用 --storage-opt size=9M
关于docker - Docker --storage-opt size 与容器实际磁盘使用情况的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70073829/