docker - docker 容器可以连接到 SRIOV 虚拟功能吗?

使用现有的支持 SR-IOV 的 NIC 会很棒。我想了解是否可以将 docker 容器附加到虚拟功能,以便它们通过 NIC 硬件桥接(而不是虚拟 docker0 桥接)进行通信。

更具体地说,考虑这种情况:
容器 A 连接到 VF#1
容器 B 连接到 VF#2

A 和 B 链接在一起,当它们交换数据时,它应该通过 NIC 上的硬件桥接(而不是 docker0)进行。

以上内容是否在 docker 中原生支持?

如果没有,管道工程可以在这里提供帮助吗? (我听说管道工程可以做惊人的事情)

示例将非常有帮助。

最佳答案

好吧,我认为对管道脚本进行一些修改可以让我们将 VF 附加到容器。以这种方式设置的容器能够相互 ping 通,而无需创建 macvlan 子接口(interface)或软件桥接。这表明适配器中的硬件网桥正在为它们进行 L2 交换。

管道的变化基本上是这样的:

[ "$IFTYPE" = phys ] && {
  [ "$VLAN" ] && {
    [ ! -d "/sys/class/net/${IFNAME}.${VLAN}" ] && {
      ip link add link "$IFNAME" name "$IFNAME.$VLAN" mtu "$MTU" type vlan id "$VLAN"
    }
    ip link set "$IFNAME" up
    IFNAME=$IFNAME.$VLAN
  }
  # Let's not create the macvlan subinterface
  # GUEST_IFNAME=ph$NSPID$CONTAINER_IFNAME
  # ip link add link "$IFNAME" dev "$GUEST_IFNAME" mtu "$MTU" type macvlan mode bridge
  GUEST_IFNAME=$IFNAME
  ip link set "$IFNAME" up
}

ip link set "$GUEST_IFNAME" netns "$NSPID"
ip netns exec "$NSPID" ip link set "$GUEST_IFNAME" name "$CONTAINER_IFNAME"
---

一个更简洁的方法是在脚本中添加一个新参数(“--direct-attach”或其他东西)以不同地处理指定的接口(interface)

https://stackoverflow.com/questions/29974520/

相关文章:

hadoop - reducer 的默认数量

json - 如何使用Python解析Spark 1.6中格式错误的JSON字符串,其中包含空格,多

django - 如果我将我的Elastic Beanstalk应用程序移动为使用Docker,是否

nginx - 在docker中无法将nginx与ghost链接

dns - 在链接的Docker容器中解析内部DNS

hadoop - 从Teradata查询到pyspark

hadoop - HDFS如何存储大于 block 大小的单个数据?

hadoop - Hadoop 2.7.7,无法使用端口8088打开Resource Manager

hadoop - 在实际运行oozie工作流之前如何检测错误?

php - PHP shell_exec无法执行Hadoop命令