先说下背景:
之前实验室有几台服务器,每台服务器中大概有4张1080Ti卡,现在想四个人用一台服务器,但是又不能直接让用户操作宿主机,不然一人出错其他人也都不能用了。于是就发现原来虚拟容器真的是非常适合,只需要给每个人一个容器,容器之间相互独立,这篇文章主要为了解决联网问题。可以让各个容器之间独立的登陆校园网。
eth1 是连接外网的网桥,单独IP,需要登录校园网
eth0 是可以直接通过宿主机上网
可以使用ifup或者ifdown命令进行网桥的开关。
bridge-utils,用于创建网桥br1sudo 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,再打开br1
sudo ifdown enp3s0
sudo 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 br1sudo 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
这时,再启动就没问题了。