我的服务器有两个网络接口,eth0 和 wlan0,一个连接到互联网,另一个连接到内部网络。目前使用 docker-compose 将 Docker 容器端口暴露到特定接口的解决方案是使用:
version: '2'
services:
mosquitto:
ports:
- "192.168.0.1:1883:1883"
这使得它很脆弱,因为 IP 地址是通过 DHCP 分配的。使用多个设备,每个设备可能具有不同的 IP 地址。因此,是否可以仅将端口公开给特定接口?此外,一切都运行在Resin.io https://resin.io/,限制iptables等的配置。
您可以解决所提到的两个阻止程序中的任何一个:
对于动态 DHCP IP,您可以按照有关设置静态 IP 的resin.io 指南进行操作:https://docs.resin.io/reference/resinOS/network/2.x/#setting-a-static-ip https://docs.resin.io/reference/resinOS/network/2.x/#setting-a-static-ip。设置静态ip后,你应该可以在ports
配置。
另一种选择是在您的系统中使用 iptablesmosquitto
应用程序容器。这可以通过以下方式实现:
a) 设置network_mode: host
and privileged: true
mosquitto 服务的设置
b) 安装iptables
作为一个RUN
Dockerfile 中的指令(例如RUN apt-get update && apt-get install iptables
)
c) 配置 iptables(例如iptables -A INPUT -i eth0 -p tcp --destination-port 1883 -j DROP
删除与端口 1883 的连接wlan0
界面)
作为旁注,我鼓励您查看我们的社区论坛(https://forums.resin.io https://forums.resin.io)解答您可能遇到的任何resin.io 问题。我们的用户群在那里非常活跃,很可能会有更多的人向您提出类似的问题或有帮助的建议。
Thanks!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)