首页 文章

是否可以将docker端口暴露给特定接口

提问于
浏览
2

我的服务器有两个网络接口,eth0和wlan0,一个连接到互联网,另一个连接到内部网络 . 使用docker-compose将Docker容器端口暴露给特定接口的当前解决方案是使用:

version: '2'

services:
  mosquitto:
    ports:
      - "192.168.0.1:1883:1883"

这使得它很脆弱,因为IP地址是通过DHCP分发的 . 使用了几个设备,每个设备可以具有不同的IP地址 . 因此,是否可以仅将端口暴露给特定接口?此外,一切都在Resin.io上运行,限制了iptables和co的配置 .

1 回答

  • 3

    你可以解决上面提到的两种阻滞剂中的任何一种:

    关于动态DHCP IP,您可以按照以下有关设置静态IP的resin.io指南进行操作:https://docs.resin.io/reference/resinOS/network/2.x/#setting-a-static-ip . 设置静态IP后,您应该能够在 ports 配置中使用它 .

    另一种选择是在 mosquitto 应用程序容器中使用iptables . 这可以通过以下方式实现:

    a)为mosquitto服务设置 network_mode: hostprivileged: true 设置

    b)在Dockerfile中安装 iptables 作为 RUN 指令的一部分(例如 RUN apt-get update && apt-get install iptables

    c)配置iptables(例如 iptables -A INPUT -i eth0 -p tcp --destination-port 1883 -j DROP 以断开 wlan0 接口上端口1883的连接)

    作为附注,我建议您查看我们的社区论坛(https://forums.resin.io),了解您可能遇到的任何resin.io问题 . 我们的用户群非常活跃,很可能会有更多人为您提供类似的问题或有用的建议 .

    谢谢!

相关问题