如何在Docker容器中获取Host的“进程信息”和“磁盘空间使用信息”

yqkkidmi  于 2023-08-03  发布在  Docker
关注(0)|答案(1)|浏览(161)

我正在做一个系统性能监控工具,它需要cpu使用率,内存使用率,磁盘使用率和当前进程信息。
我已经在docker中完成了,但是安装和卸载太复杂了,所以我想在docker中完成它。
我已经在容器中挂载了/proc/stat/proc/meminfo,所以我现在可以直接读取主机的cpu使用情况和内存使用情况。
现在我在获取磁盘使用率和当前进程方面遇到了麻烦。在主机中正常,我将运行dfps auxf来获取它们,但它不能在容器中完成。我读了procps的文件,但仍然感到困惑。
(Also我知道怎么做,但我真的不想在ssh中使用remote-command,因为我只是不想做基于密钥的身份验证。请不要推荐这种方式)。
有没有一种方法,比如 mount something into container,可以在docker容器中读取主机的“进程信息”和“磁盘空间使用信息”?

wfauudbj

wfauudbj1#

有没有一种方法,比如将一些东西挂载到容器中,可以在Docker容器中读取主机的“进程信息”和“磁盘空间使用信息”?
当然可以。您可以将主机的根文件系统和/proc文件系统挂载到容器中,如下所示:

docker run -v /proc:/host/proc -v /:/host/root ...

字符串
然后,在容器内部,您可以通过检查/host/proc目录来发现主机进程信息,并且可以通过运行df /host/root来查看文件系统利用率。
当在容器中运行node-exporter时,会使用这种技术; this document示出了相对常见的配置。
请注意,在这种情况下,您将无法使用ps,但您可以直接从/host/proc读取条目。
或者,您可以在主机pid命名空间中运行容器:

docker run --pid=host -v /:/host/root ...


这允许您在容器中运行ps以查看主机进程。

相关问题