从 Docker 容器内部确定绑定挂载上的可用空间

从 Docker 容器内部确定绑定挂载上的可用空间

我在运行 Debian 的 Docker 容器内有一个应用程序,该应用程序具有可以导入大量大文件的功能。应用程序将文件存储在主机上的一个文件夹中,该文件夹可通过容器内部的绑定挂载进行访问。当用户将此导入功能指向一组大于可用存储空间的文件时,这是一个问题,空间完全耗尽会使应用程序非常不高兴,我想避免这种情况。

问题是计算可用空间量似乎相当棘手在正确的分区上从容器内部。我可以df在容器内执行并获取所有分区上的可用空间,但我不知道哪个分区是正确的。绑定安装始终位于容器内部的同一路径,我无法找出它对应于容器外部的哪个路径。

有没有办法计算出 Docker 容器内特定绑定安装的文件夹安装该文件夹的分区上有多少可用空间?

答案1

我相信你可以使用格式选项docker inspect做你正在寻找的事情:

MOUNTS=$(docker inspect -f '{{ range .Mounts }}{{ .Source }} {{ end }}' $CONTAINER_ID)

这将创建一个变量,$MOUNTS其中包含所有绑定安装的来源位置$CONTAINER_ID,并用空格分隔。

将该输出与df主机的运行结合起来以确定有多少空间可用:

for source in $MOUNTS; do df -h $source; done

这应该输出所有挂载来源的分区,并显示这些分区上的可用空间。

相关内容