【问题标题】:Bind a docker container to a single network interface将 docker 容器绑定到单个网络接口
【发布时间】:2020-04-18 14:25:45
【问题描述】:

目前我的家庭网络在逻辑上分为 2 个独立的 VLAN。

  • LAN(未标记的本地 LAN 10.20.0.0/16):所有受信任的设备都将在其中运行
  • IOT_LAN(标签为 30 10.30.0.0/16):所有 IOT/家庭娱乐不受信任的设备都将在其中运行。

在防火墙级别LAN 可以访问IOT_LAN,但反之则不行。

我在通过以太网电缆连接到我的交换机的中继端口的树莓派 4 上运行 Docker。在 Raspi 级别,Native LAN 绑定到eth0 接口,而IOT_LAN 绑定到eth0.30

这里的问题是:是否可以同时运行 2 个不同的容器,一个绑定到 eth0 接口,另一个绑定到 eth0.30?

例如,我们可以说容器 1 是一个应用程序,它需要能够访问主要的 LAN 网络,而容器 2 是一个 IOT 特定应用程序,我希望将其限制在 IOT_LAN 网络中。

谢谢

【问题讨论】:

  • 是的; docker run -p 和 Docker Compose ports: 选项允许您指定要绑定到的主机 IP 地址。
  • 感谢@DavidMaze,我已经尝试过该选项,但没有任何运气。容器仍然能够 ping LAN 网络上的设备

标签: docker vlan


【解决方案1】:

这就是我解决问题的方法:

我在docker-compose.yml 文件中创建了一个网络:

# IOT_LAN.
networks:
  vlan30:
    driver: macvlan
    driver_opts:
      parent: eth0.30
    ipam:
      config:
        - subnet: 10.30.0.0/16

每个需要留在 10.30 网络中的容器然后使用以下语法附加到上面的网络:

networks:
  vlan30:
    ipv4_address: "10.30.0.15"

IP 地址在 docker-compose 文件中定义,应属于先前在路由器上创建的保留范围,以避免与 DHCP 分配的地址冲突。

这对我有用。所有容器现在只属于10.30网络。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2017-02-08
    • 2018-12-09
    相关资源
    最近更新 更多