将Docker容器绑定到单个网络接口

时间:2020-04-18 14:25:45

标签: docker vlan

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

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

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

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

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

举例来说,我们可以说容器1是一个需要能够访问主LAN网络的应用程序,而容器2是一个IOT专用应用程序,我想将其限制为{{1} }网络。

谢谢

1 个答案:

答案 0 :(得分:0)

这是我解决问题的方法:

我已经在print(paste0("Trial.", i, " - Trial.", j))文件中创建了一个网络:

docker-compose.yml

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

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

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

这对我有用。现在,所有容器仅属于networks: vlan30: ipv4_address: "10.30.0.15" 网络。