【问题标题】:Unable to access docker containers from host over macvlan network无法通过 macvlan 网络从主机访问 docker 容器
【发布时间】:2017-05-18 13:19:27
【问题描述】:

在我的 Linux 网络中,我无法通过专用的 macvlan 网络从运行它们的主机访问我的 docker 容器。来自这个 macvlan 网络的所有其他连接都很好。

所以基本上设置是:

DOCKER1       eth0  172.0.0.1 (default)
  |           eth1  10.0.0.1  (macvlan)
  CONTAINER1        10.0.0.11 (macvlan)

DOCKER2       eth0  172.0.0.2 (default)
  |           eth1  10.0.0.2  (macvlan)
  CONTAINER2        10.0.0.12 (macvlan)
  • 主机 DOCKER1 无法到达 CONTAINER1
  • 主机 DOCKER2 无法访问 CONTAINER2
  • 主机 DOCKER1 可以到达 DOCKER2
  • 主机 DOCKER1 可以到达 CONTAINER2
  • 主机 DOCKER2 可以到达 DOCKER1
  • 主机 DOCKER2 可以到达 CONTAINER1
  • 所有容器都可以相互访问
  • 物理网络中的所有其他设备都可以到达所有
  • 都可以到达网关/互联网

如何让主机通过 macvlan 网络访问自己的容器?

我需要特定的应用程序通过这个网络进行交互,所以使用docker exec 不能解决我的问题;)。

【问题讨论】:

    标签: docker networking macvlan


    【解决方案1】:

    您可以通过以下方式做到这一点:

    ip link add foobar link enp7s0 type macvlan mode bridge
    ip addr add 192.168.9.252/32 dev foobar
    ip link set foobar up
    ip route add 192.168.9.228/32 dev foobar
    

    地点:

    enp7s0 - 物理适配器的名称

    192.168.9.252/32 - 网络上的真正新 IP

    192.168.9.228/32 - 使用macvlan的容器IP

    请注意,这不会在重新启动后继续存在,因此您需要编写脚本以运行每次重新启动或使用其他方法使其持久化

    【讨论】:

    • 您能详细说明一下吗?每个 docker 容器是否必须重复此操作?这是如何运作的?有没有参考资料?
    • @LeviRoberts 你可以这样做一次,但需要在每台主机上完成,例如在主机 DOCKER1:#1 创建新的 macvlan:ip link add macvlan2 link eth1 type macvlan mode bridge。 #2 在与 macvlan2 上的其他 macvlan 相同的子网内分配 IP:ip addr add 10.0.0.201/32 dev macvlan2。 #3 启用新的 macvlan:ip link set macvlan2 up。 #4 在新的 macvlan 设备上路由 macvlan 子网:ip route add 10.0.0.0/24 dev macvlan2。然后您的所有容器都可以与主机通信,反之亦然。缺点:每个 docker 主机丢失一个 IP,亲:你获得连接。 Ping 到 10.0.0.11 将通过 10.0.0.201 工作
    【解决方案2】:

    如果没有外部交换机的特殊支持,主机无法与本地 macvlan 设备通信。参见例如this Red Hat documentation 讨论了虚拟机使用 macvlan 设备:

    但是,当客户虚拟机配置为使用 type='direct' 网络接口(例如 macvtap)时,尽管能够与网络上的其他客户和其他外部主机通信,但客户无法与自己的客户进行通信主持人。

    这种情况实际上并不是错误——它是 macvtap 定义的行为。由于主机的物理以太网连接到 macvtap 网桥的方式,转发到物理接口的访客进入该网桥的流量无法反弹回主机的 IP 堆栈。此外,从主机 IP 堆栈发送到物理接口的流量无法反弹回 macvtap 网桥以转发给客人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多