LXC为容器提供了独立的网络空间,这意味着我们可以为容器配置IP地址,MAC地址,route表等等,并通过LXC提供的几种方式连接到宿主进而连到互联网。下面介绍两种采用网桥方式连接到宿主机的配置情况。
情况一:
采用静态IP地址,即宿主本身的IP地址是由系统管理员手动配置的,容器的IP地址也是静态指定。
宿主机的配置:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
BRIDGE=br0
vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=none
ONBOOT=yes
DELAY=0
IPADDR=10.20.153.21
NETMASK=255.255.255.0
GATWAY=10.20.153.254
然后重启网络
service network restart
下面来配置LXC容器
vim net.conf
lxc.network.type=veth
lxc.network.flags=up
lxc.network.link=br0
lxc.network.ipv4=10.20.153.234/24
lxc.network.hwaddr=4a:49:43:49:79:bd
然后创建LXC容器
lxc-create -n net -f net.conf
最后就可使用LXC容器来启动应用了
lxc-execute -n net ping 10.20.153.20
情况二:
采用Dhcp+NAT的方式,即宿主机的IP地址由dhcp协议自动获取,LXC容器的IP地址也通过dhcp协议获取
宿主机配置:
yum install libvirt
这时机器上会多出一个virbr0的网桥,通过ifconfig就可以看到
LXC容器的配置:
lxc.network.type=veth
lxc.network.flags=up
lxc.network.link=virbr0
lxc.network.hwaddr=4a:49:43:49:79:bd
然后创建LXC容器
lxc-create -n net -f net.conf
最后使用容器启动应用,注意此时不能直接启动应用,需要先一步使用dhcp获得IP地址,可以写一个脚本来替代。比如:
vim net.sh
dhclient eth0
ping xx.xx.xx.xx
再启动容器:
chmod +x net.sh
lxc-execute -n net ./net.sh
注:如果是ubuntu系统,通过apt-get 安装的lxc,不用再安装libvirt,安装好lxc后,系统会多一个lxcbr0,功能与virbr0类似