Mil*_*deh 3 containers docker docker-networking
是否可以在不安装额外插件的情况下将 eth(n) 传递到 Docker 容器?
在 LXC/LXD 中,通过以下命令很容易:
lxc config device add CONTAINER-NAME eth2 nic nictype=physical parent=eth2 name=eth2
Run Code Online (Sandbox Code Playgroud)
小智 6
可以将网络接口移动到容器 NET NAMESPACE(基于我将 SR-IOV VF 接口移动到容器的经验的示例):
HOST_INTERFACE=enp4s6f5
CONT_IFACE_NAME=eth255
container=debian-test
NSPID=$(docker inspect --format='{{ .State.Pid }}' $container
ip link set "$HOST_IFACE" netns "$NSPID"
Run Code Online (Sandbox Code Playgroud)
如果界面很重要,可以在设置之前更改它
ip netns exec "$NSPID" ip link set "$HOST_IFACE" name "$CONT_IFACE_NAME"
Run Code Online (Sandbox Code Playgroud)
设置它
ip netns exec "$NSPID" ip link set "$CONT_IFACE_NAME" up
Run Code Online (Sandbox Code Playgroud)
您不能直接将网卡附加到容器,但您可以使用 MACVLAN 网络并将网卡用作父接口
检查您的 NIC 子网
ip addr show eth2
Run Code Online (Sandbox Code Playgroud)
应该返回类似的东西
3: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 172.16.86.250/24 brd 172.16.86.255 scope global eth2
Run Code Online (Sandbox Code Playgroud)
现在在同一个子网中创建一个 MACVLAN 网络。我172.16.86.1用作网络网关/路由器
docker network create -d macvlan \
--subnet=172.16.86.0/24 \
--gateway=172.16.86.1 \
-o parent=eth2 docker_macvlan
Run Code Online (Sandbox Code Playgroud)
然后启动一个容器并将其连接到 MACVLAN 网络,并在与您的 NIC 相同的子网中为其提供一个 IP 地址,例如 172.16.86.15
docker run -itd --net=docker_macvlan --name macv1 --ip=172.16.86.15 ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7532 次 |
| 最近记录: |