先说下背景:
之前实验室有几台服务器,每台服务器中大概有4张1080Ti卡,现在想四个人用一台服务器,但是又不能直接让用户操作宿主机,不然一人出错其他人也都不能用了。于是就发现原来虚拟容器真的是非常适合,只需要给每个人一个容器,容器之间相互独立,这篇文章主要为了解决联网问题。可以让各个容器之间独立的登陆校园网。
eth1
是连接外网的网桥,单独IP
,需要登录校园网
eth0
是可以直接通过宿主机上网
可以使用ifup
或者ifdown
命令进行网桥的开关。
bridge-utils
,用于创建网桥br1
sudo apt install bridge-utils
/etc/network/interfaces
,更改为下列:auto lo iface lo inet loopback auto br1 iface br1 inet dhcp bridge_ports enp3s0 iface enp3s0 inet dhcp
接着,先关闭enp3s0
,再打开br1sudo ifdown enp3s0sudo ifup br1
然后,把br1
与容器相连
lxc network attach-profile br1 default eth0
如果eth0
提示已存在,那就用eth1
lxc network attach-profile br1 default eth1
接着,进入容器,修改容器的网络配置文件vi /etc/network/interfaces
auto lo iface lo inet loopback auto eth1 iface eth1 inet dhcp auto eth0 iface eth0 inet dhcp
错误记录:
错误1:
missing-parent-lxdbr0-for-nic-eth0
这时先查看一下default
中的网络配置:
然后删掉出错的eth0
sipl@sipl-1080Ti:~$ lxc profile device remove default eth0
即可。
错误2:
但是没有IPV4
地址 lxc profile edit default
结果如下:
config: environment.http_proxy: "" user.network_mode: "" description: Default LXD profile devices: eth0: name: eth0 nictype: bridged parent: lxdbr1 type: nic eth1: nictype: bridged parent: br3 type: nic root: path: / pool: lxd-zfs type: disk name: default used_by: - /1.0/containers/ceshi - /1.0/containers/ceshi1 - /1.0/containers/ceshi2 - /1.0/containers/dlnqoe2 - /1.0/containers/dlnqoe3 - /1.0/containers/docker
lxc profile show default
,然后把列出来的网络设备都删掉sipl@sipl-1080Ti:~$ lxc profile device remove default eth0 sipl@sipl-1080Ti:~$ lxc profile device remove default eth1 sipl@sipl-1080Ti:~$ lxc profile device remove default eth2
全部删除之后,这时lxc ls
应该是什么都没有的。
OK
,这个时候,我们就可以开始了,打开网络配置文件sudo vi /etc/network/interfaces
修改为下面:
auto lo iface lo inet loopback auto br1 iface br1 inet dhcp bridge_ports enp5s0 iface enp5s0 inet dhcp
已经完成一半啦,接着,重启电脑
然后我们查看IP
会发现,默认br1
的IP
值是个很奇怪的地址,10.181.xx.xx
,这显然不是我们想要的。
这个时候,输入
sudo ifdown br1
sudo ifup br1
这时再查看地址,你会发现,我们期待的局域网地址已经分配啦
br1
绑定到容器里:lxc network attach-profile br1 default eth0
然后我们lxc ls
看看效果:
恩,完美!
错误3:
sipl@sipl-1080Ti:~$ lxc start dlnqoe3 Error: Missing parent 'br2' for nic 'br2'
这个错误很奇怪呀,因为我上面已经把默认文件中的br2都删掉了呀,于是开始找原因,最终发现,原来我之前曾经手动给这个容器添加过br2,想来也是惭愧,当时也遇到之前的问题(无法获取IP),当时我采取的办法很笨,就是用哪个就给哪个容器添加设备。结果。。。。
sipl@sipl-1080Ti:~$ lxc config device remove dlnqoe3 br2
这时,再启动就没问题了。