Docker – 访问主机程序

这是一个重复的 岗位 我已经在docker论坛上创建了。因此,一旦这个问题得到解决,我将关闭这个另一个论坛。但由于在docker论坛上没有人回答,而我的问题依然存在,所以我再发一次,期待得到答案。

我想把一个服务器监控应用作为docker容器暴露出来。我所写的应用依靠proc来读取系统信息,比如CPU利用率或磁盘统计。因此,我必须将hosts proc虚拟文件系统中提供的信息转发给我的docker容器。

所以我做了一个简单的镜像(使用docker网站上的第一个或第二个介绍。链接)并启动了它。

docker run -v=/proc:/host/proc:ro -d hostfiletest

假设运行中的容器可以从hostproc中读取主机系统的相关信息。

我在容器内部启动了一个控制台来检查。

docker exec -it {one of the funny names the container get} bash

并检查了hostproc的内容

最简单的检查方法是获取hostprocsyskernelhostname的内容–那应该产生我正在工作的vm的主机名.但我得到的是容器的主机名,而hostprocuptime得到的是vm正确的正常运行时间。

我在这里错过了什么吗?也许是概念性的东西?

Docker版本17.05.0-ce,构建89658be,运行在Linux 4.4.0-97-generic上(VM)。

更新。

我找到了几篇文章,介绍了如何使用我在上文提到的同样方法在一个包含内运行一个特定的监测应用程序。

更新:我找到了几篇文章,介绍了如何使用我上面提到的相同方法在一个包含中运行一个特定的监控程序。

刚刚尝试使用现有的Ubuntu镜像–同样的行为。用pid=host的特权运行镜像也没有用。

问候Peepe

解决方案:

我知道它的几个月后没有,但我今天遇到了同样的问题。

在我的情况下,我使用的是 psutil 来读取docker容器内主机的磁盘统计信息。

解决方法是将docker容器中的 主机文件系统作为只读到docker容器中,用 -v /:/rootfs:ro 并指定proc的路径为 psutil.PROCFS_PATH = '/rootfs/proc'.

现在 psutil.disk_partitions() 列出了主机文件系统的所有分区。由于主机名也包含在proc层次结构中,我想这也适用于其他主机系统信息,只要检索命令指向的是 /rootsfs/proc.

给TA打赏
共{{data.count}}人
人已打赏
未分类

更快的方式创建对象lombok builder与手动声明

2022-9-9 7:09:23

未分类

注册表。捕捉侧边字符[重复]

2022-9-9 7:09:25

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索