使用现有的支持SR-IOV的NIC会很棒。我想了解Docker容器是否可以连接到虚拟功能,以便它们通过NIC硬件桥(而不是虚拟docker0桥)进行通信。
更具体地说,请考虑以下情况:
容器A连接到VF#1
容器B连接到VF#2
A和B链接在一起,当它们交换数据时,它应该通过NIC上的硬件桥(而不是docker0)发生。
以上是否支持docker?
如果没有,管道工程可以帮忙吗? (我听说过管道工程可以做出惊人的事情)
示例非常有用。
答案 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”或其他东西)来区别对待指定的界面