LXC是Linux containers的简称,操作系统级别的虚拟化技术,

。它可以在操作系统层次上为进程提供的虚拟的执行环境。一个虚拟的执行环境被称为一个容器 (container)。可以为容器绑定特定的cpu和memory节点,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和是 swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。

   

基本安装

    Debian/Ubuntu系统下,使用apt安装:

    注意修改/bin/sh,链接到/bin/bash。lxc在某些版本上有一个bug,声明为/bin/sh却使用bash语法,导致不如此链接会出现错误。

镜像和设定

    使用lxc-create -n name -t template生成镜像。

    在/usr/share/lxc/templates可以看到可用的模板。

    在/var/cache/lxc/debian会缓存生成过程的临时文件。

    生成的镜像需要在镜像内安装lxc,否则无法使用lxc-execute。

资源限制

    在config文件内,写入cgroup限定规则。注意,使用内存限定的话,需要在内核参数中加入cgroup_enable=memory

    在debian/ubuntu下,可以修改/etc/default/grub文件,使用update-grub重新生成规则。

    在config文件中可以如下限定:

执行

    还可以用以下指令,在已经启动的container里执行进程,

《》()。

    以下指令是用来在未启动的container里执行进程的。

    ** 注意,虽然系统初始化了所有资源,但是由于sysv-init没有执行,因此系统内初始化并没完成。这导致系统不完整,例如网络部分不可用。 **

网络隔离

自行设定的网络

    lxc采用veth技术,每次虚拟机建立时,都会产生一对veth。虚拟机内的一般叫做eth0,虚拟机外的叫做vethXXX。这张网卡可以以任何linux许可的方式进行配置。

    dnsmasq所产生的dhcp封包无法被debian guest的dhcp client承认,因此无法使用dnsmasq自动部署网络。

使用iptables配置访问

    在开启br-nf后,所有bridge的包都会经过iptables的过滤。因而可以用iptables的FORWARD规则限制guest堆外网的访问。详细配置请参考此处。

项目主页

    LXC

来自:

本文地址:https://www.tycjgp.com/jiankang/325516.html