从 docker 容器内部访问主机 shell

问题描述

我有一个用 Java 编写的基于 docker 的应用程序,它调用一个 shell 脚本来收集数据。我想在这个脚本中添加一些命令来收集主机/VM 数据,如下所示:

firewall-cmd --list-all >> firewall.txt

journalctl >> journal.log

hostnamectl >> hostname-config.txt

iptables-save >> iptables.txt

由于容器不能直接访问这些命令/资源,有什么方法可以实现吗?基本上我正在寻找的是一种从容器内部访问/运行主机上命令的方法。如果是,请回答与上述任何命令相关的示例。

解决方法

Docker 的一个主要设计目标是容器中的进程不能直接在主机上运行命令,也不能直接访问主机的文件系统、网络配置、初始化系统或其他细节。

如果你想在这个系统上运行一个详细的低级诊断工具,它需要直接在主机系统上运行,并且可能以 root 身份运行。它不能在容器、虚拟机或其他隔离系统中运行。