我想在Docker容器运行期间读取主机的ifconfig输出,以便能够解析它并获取OpenVPN接口(tap0)IP地址并在我的应用程序中对其进行处理。
不幸的是,通过环境传播此值不是我的情况,因为IP地址可能会在运行容器时改变,并且我不想每次都重新启动应用程序容器以查看新值。
当前工作解决方案是主机上的CRON,它将IP写入共享卷中的文件中,并且容器从中读取IP-但是我正在寻找更好的解决方案,因为对我来说,这是一种解决方法。此外,还计划使用network: host
创建一个新容器,该容器将看到主机的接口-可以工作,但由于涉及许多步骤,并且可能涉及安全问题,因此看起来也像是一种变通方法。
我有一个问题,是否有任何有效且更干净的方法来实现我的目标-实时读取docker容器中主机的ifconfig?
Docker的特定设计目标是容器不能直接访问主机的网络配置。您确定的解决方法几乎是执行这些操作的唯一方法。
[如果您尝试以某种方式修改主机的网络配置(例如,您尝试实际运行VPN),最好在Docker之外运行它。无论哪种方式,您仍然需要root权限,但是您无需禁用一堆标准限制即可执行所需的操作。
[如果您尝试提供可以访问该服务的地址,则需要使用类似环境变量的配置。即使您可以访问主机的配置,也可能不是您需要的地址:考虑一个在负载平衡器后面的云实例上运行的云环境,而外部客户端则需要负载平衡器;仅通过主机的网络配置,您就不能直接知道这些。