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类似

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐