让docker容器访问usb无线适配器


0

我有一个无线usb适配器,我希望我的docker容器只用于互联网(而不是计算机自带的无线适配器)。

我对网络的了解是基本的,所以我试着阅读很多东西来解决如何做到这一点,但我完全超出了我的深度。

到目前为止,我没有成功尝试以下(enx582c80139263是usb无线适配器):

1)为容器创建网络命名空间并将无线适配器移动到该命名空间(通过以下方式) 这个 ):

sudo docker run -dit --rm --privileged --net none --name mycontainer debian
pid=$(sudo docker inspect --format '{{.State.Pid}}' mycontainer);
sudo mkdir -p /var/run/netns;
sudo ln -s /proc/$pid/ns/net /var/run/netns/$pid;
sudo ip link set dev enx582c80139263 netns $pid;

当我这样做时,适配器不再显示我在执行ifconfig时的IP地址。我不确定无线适配器在全局命名空间中如何正常获取IP地址的过程,所以我被困在这里

2)为容器创建网络命名空间,然后创建veth对,在容器命名空间中有一个veth,在全局命名空间中有另一个。然后我给了他们ip地址并使用桥接器(brctl)将无线适配器接口连接到全局命名空间veth。

sudo docker run -dit --rm --privileged --net none --name mycontainer debian
pid=$(sudo docker inspect --format '{{.State.Pid}}' mycontainer);
sudo mkdir -p /var/run/netns;
sudo ln -s /proc/$pid/ns/net /var/run/netns/$pid;
sudo ip link add veth0 type veth peer name veth1
sudo ip link set veth1 netns $pid
sudo ip netns exec $pid ifconfig veth1 10.0.0.1/24 up
sudo ifconfig veth0 10.0.0.2/24 up
sudo brctl addbr br0
sudo brctl addif br0 enx582c80139263 veth0

在将全局veth添加到桥之前,我可以从一个veth ping到另一个veth,但是在添加它之后不能。不知道为什么

另外,我将无线适配器连接到网桥我无法访问互联网(我认为互联网可以从内置无线网卡访问,因为我仍然连接到wifi)。


我可能会以完全错误的方式解决这个问题......在过去的几天里,我逐渐了解了网络和码头工具。如果我以不同的方式接近这个,请告诉我


如果你没有在这里得到答案,试试你的运气在Unix& Linux网站......
xenoid

谢谢。我按照本指南设法让它工作: blogs.igalia.com/dpino/2016/04/10/network-namespaces
Jonny Shanahan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.