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

时间:2015-04-30 17:49:17

标签: docker

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

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

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

以上是否支持docker?

如果没有,管道工程可以帮忙吗? (我听说过管道工程可以做出惊人的事情)

示例非常有用。

1 个答案:

答案 0 :(得分:0)

好吧,我认为管道脚本中的一点修改可以让我们将VF附加到容器上。以这种方式设置的容器能够相互ping通,而无需创建macvlan子接口或软件桥。这表明适配器中的硬件桥正在为它们进行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”或其他东西)来区别对待指定的界面