【问题标题】:Obtaining Linux host metrics from within a docker container从 docker 容器中获取 Linux 主机指标
【发布时间】:2021-06-14 17:06:13
【问题描述】:

寻找一些关于如何从 docker 容器中报告 linux 主机指标的建议,例如 cpu 和内存利用率以及磁盘使用统计信息。主机将包含许多 docker 容器。一种想法是从容器外部运行 Top 和其他基本的 linux 命令,并将它们推送到具有适当授权的容器文件夹中,以便可以使用它们。另一个想法是使用 docker api 为容器运行 docker stats,但不确定这是最好的,因为它可能不会报告主机上运行的其他未容器化的进程。第三种选择是从容器内以某种方式在主机上执行诸如 TOP 和其他命令之类的命令,这个选项最适合我的情况。我只是在寻找其他人使用过的一些经过验证的设计模式。此外,我无法在主机上安装一堆工具,因为这将是一个客户主机,我无法控制已安装的内容。

【问题讨论】:

  • 如何在您的主机上运行一个脚本,将系统统计信息发送到一个文件,然后将该文件挂载到容器中?
  • 是的,这也是一个想法。该小组的共识是尝试从容器内运行它。
  • 因为客户不允许运行脚本和创建 cron 作业。如果我们可以在容器内执行此操作,并从容器伸出到主机执行 top 和其他一些 linux 命令,那就足够了。
  • 在主机上运行命令违背了容器化的目的。您必须在特权模式下运行容器,这可能会完全危及安全

标签: linux docker reporting metrics


【解决方案1】:

您可以在特权模式下运行您的容器,但请注意,这可能会危及主机安全,因为您的容器将不再处于沙盒环境中。

docker run -d --privileged --pid=host alpine:3.8 sh

当操作员执行 docker run --privileged 时,Docker 将启用对主机上所有设备的访问,并在 AppArmor 或 SELinux 中设置一些配置,以允许容器几乎与在容器外运行的进程一样访问主机在主机上。 Docker 博客上提供了有关使用 --privileged 运行的更多信息。

https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities

好的参考:https://security.stackexchange.com/a/218379

【讨论】:

    猜你喜欢
    • 2016-10-12
    • 2019-08-08
    • 1970-01-01
    • 2014-05-21
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多