LXC是linux container的缩写,是一种操作系统级别的虚拟化方式,本文主要介绍一下debian8下LXC的安装和配置。

LXC的安装和使用对系统有一定要求,不过基本需求不是很高:

核心依赖包:

Hard dependencies:

  • One of glibc, musl libc, uclib or bionic as your C library
  • Linux kernel >= 2.6.32

lxc-attach命令的额外依赖:

Extra dependencies for lxc-attach:

  • Linux kernel >= 3.8

unprivileged container的额外依赖:

Extra dependencies for unprivileged containers:

  • cgmanager or another CGroup manager configuring your system for unprivileged CGroups operation
  • A recent version of shadow including newuidmap and newgidmap
  • Linux kernel >= 3.12

安装方式很简单,直接用debian官方源里直接安装就可以:

sudo apt-get install lxc

接着就可以创建一个容器了,使用如下命令:

sudo lxc-create -t download -n my-container

这一步会下载官方的镜像源,根据需求和提示选择自己需要的系统和发行版本然后回车,我这里选择debian jessie amd64。

debian8下安装配置LXC-夜河资源网

 

接着系统下载和安装会花费一段时间,完成后如果没有出错应该和下图类似。

debian8下安装配置LXC-夜河资源网

默认情况下系统是没有初始密码的,也是为了安全考虑,所以需要自己先设置密码,否则无法登陆,使用chroot命令设置密码:

sudo chroot /var/lib/lxc/my-container/rootfs/

passwd

接着就可以启动容器了,不出意外就可以进入console登录界面,输入刚才设置的密码登录:

sudo lxc-start -n my-container

至此一个容器就建立好了,但是这时容器是没有网络的,下面介绍一下网络接口的配置,因为我使用的机器只有一个IP,所以选择NAT方式接入网络,编辑/etc/network/interfaces文件,添加如下内容:

auto br0
iface br0 inet static
address 192.168.254.1
netmask 255.255.255.0
dns-nameservers 8.8.8.8 4.2.2.2
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
pre-down echo > /proc/sys/net/ipv4/ip_forward
pre-down iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
bridge_ports none
bridge_stp off

保存后执行sudo /etc/init.d/networking restart,用ifconfig查看网络接口,如果多出来一个br0说明配置生效了。

debian8下安装配置LXC-夜河资源网

接着在/var/lib/lxc/my-container/config内修改lxc.network.type = empty为如下内容:

lxc.network.type = veth

lxc.network.flags = up

lxc.network.link = br0

保存后需要重启容器生效,这时ssh登录界面被容器占据无法退出,可以重新启动一个会话,先停止容器然后启动:

sudo lxc-stop -n my-container

sudo lxc-start -n my-container

不出意外这时登录容器就可以看到网卡eth0,但是此时没有IP和网络,需要手动设置,以下命令是在容器内部执行的:

ifconfig eth0 192.168.254.2/24

route add default gw 192.168.254.1

echo ‘nameserver 8.8.8.8’>/etc/resolv.conf

debian8下安装配置LXC-夜河资源网

然后执行apt-get update 和 apt-get install 安装基本的软件包(默认没有vi,wget这些基本包,openssh-server也是需要自己安装的),然后把网络地址设置成静态以免每次启动都要重新设置(这里应该可以做DHCP,但是我没有测试,就不介绍了,感兴趣的可以自行研究)。

因为使用的是NAT方式,如果需要从外部访问SSH进行管理还需要做端口映射,可以使用iptables:

iptables -t nat -A PREROUTING -i eth0 -p tcp –dport {external_port} -j  DNAT –to-destination 192.168.254.2:22

至此整个LXC的安装和配置就完成了。