Docker网络和VLAN

Docker网络和VLAN,docker,Docker,我有一个关于docker通过(主机)VLAN接口联网的问题 我试图通过VLAN网络从docker容器通过ssh连接到服务器,但无法建立连接(超时) 设置: 我有两台机器(我们称之为服务器和笔记本电脑)通过 使用vlan的网络(称之为“专用”) “正常”网络(称之为“公共”) 我尝试使用专用网络通过SSH从笔记本电脑上的容器连接到服务器 诊断步骤: “本机”SSH连接可以很好地工作,同时使用私有和公共网络 可以使用公共网络从笔记本电脑上的容器内部到服务器进行SSH连接 wireshark(在

我有一个关于docker通过(主机)VLAN接口联网的问题

我试图通过VLAN网络从docker容器通过ssh连接到服务器,但无法建立连接(超时)

设置: 我有两台机器(我们称之为服务器和笔记本电脑)通过

  • 使用vlan的网络(称之为“专用”)
  • “正常”网络(称之为“公共”)
我尝试使用专用网络通过SSH从笔记本电脑上的容器连接到服务器

诊断步骤:
  • “本机”SSH连接可以很好地工作,同时使用私有和公共网络
  • 可以使用公共网络从笔记本电脑上的容器内部到服务器进行SSH连接
  • wireshark(在笔记本vlan接口上监听)告诉我发送了一个[SRV]包,服务器用[SRV,ACK]响应。但是,容器似乎没有收到此消息,这导致服务器的[SRV,ACK]重新传输,也导致来自容器的新[SRV]包

  • 我启动了一个
    nginx
    容器,监听
    0.0.0
    (在所有接口上)-它可以从公共网络访问,但不能从专用网络访问

  • 我在笔记本电脑上安装了
    nginx
    ,再次监听所有接口。它可以通过私人和公共网络访问

因此,这个问题似乎与“docker和VLAN”有关:wireshark还建议“传出”是可能的,但“传入”不是


有什么想法吗?

目前最好的选择是使用(当前)实验功能“”

Linux实现非常轻量级,因为 与使用传统的Linux网桥进行隔离相比,它们更简单 关联到要实施的Linux以太网接口或子接口 网络之间的隔离和与物理网络的连接

该网络相当大,无法在此处复制,但是,一旦安装了实验版本,要创建ipvlan网络并运行附加到该网络的容器,您应该运行:

Ipvlan 在db_网络上启动一个容器 在那一页上还有很多要读的

几点注意:

  • -o ipvlan\u模式=
    如果未指定,则默认为L2模式

  • 容器无法ping底层主机接口,因为Linux有意对它们进行过滤以实现额外的隔离

  • 实验意味着它还没有准备好投入生产,可能有一些bug。文档声明它是“为在沙盒环境中进行测试和评估而提供的”


  • 来自默认容器的传出连接被取消。wireshark跟踪是否显示vlan数据包的公共网络源地址?公共广播可以在“私人”网络上路由吗?在过去的4年里,文档和Docker发生了很大的变化。这些文档中最重要的部分在答案中。新文档位于
    docker network  create -d ipvlan \
      --subnet=192.168.1.0/24 \ 
      --gateway=192.168.1.1 \
      -o ipvlan_mode=l2 \
      -o parent=eth0 db_net
    
    docker  run --net=db_net -it --rm alpine /bin/sh