在运行的Docker容器中读取主机的ifconfig

时间:2019-11-05 12:05:13

标签: docker docker-compose docker-machine alpine

我想在Docker容器运行期间读取主机的ifconfig输出,以便能够解析它并获取OpenVPN接口(tap0)IP地址并在我的应用程序中对其进行处理。

不幸的是,通过环境传播此值不是我的情况,因为IP地址可能会在运行容器时改变,并且我不想每次都重新启动应用程序容器以查看新值。

当前有效的解决方案是主机上的CRON,可将IP写入共享卷中的文件中,并从中读取容器-但我正在寻找更好的解决方案,因为我认为解决方法。此外,还计划使用network: host创建一个新容器,该容器将看到主机的接口-可以工作,但由于涉及许多步骤,并且可能涉及安全问题,因此它看起来也像是一种解决方法。

我有一个问题,是否有任何有效且更干净的方法可以实现我的目标-实时读取Docker容器中主机的ifconfig?

1 个答案:

答案 0 :(得分:1)

Docker的一个特定设计目标是容器不能直接访问主机的网络配置。您确定的解决方法几乎是执行这些操作的唯一方法。

如果您尝试以某种方式修改主机的网络配置(例如,尝试实际运行VPN),则最好在Docker之外运行它。无论哪种方式,您仍然需要root权限,但是您无需禁用一堆标准限制即可执行所需的操作。

如果您想提供可以访问该服务的地址,则需要使用环境变量之类的配置。即使您可以访问主机的配置,也可能不是您需要的地址:考虑一个在负载平衡器后面的云实例上运行的云环境,而外部客户端则需要负载平衡器;仅通过主机的网络配置,您就无法直接知道这些信息。