首页 > 代码库 > ubuntu 14.04 体验LXC非特权容器

ubuntu 14.04 体验LXC非特权容器

LXC 1.0 最大的特性是非特权容器,通过巧妙的uidmap,将物理机的普通用户(uid和gid)映射成容器里的root(uid=0,gid=0),极大的提高了lxc的安全性。


LXC 1.0 对内核和python版本有要求,故下文以 ubuntu 14.04 为例,使用普通用户dell创建非特权的lxc容器。

(以下操作,非特别说明,均为root权限操作,命令提示符为#号)


1、安装lxc

apt-get install lxc uidmap

2、创建普通用户

useradd -m dell
mkdir -p /home/dell/.local/share/lxc
mkdir -p /home/dell.config/lxc


3、配置uidmap

usermod -v 10000-65535 dell
usermod -w 10000-65535 dell
echo "lxc.id_map = u 0 10000 65535" >> /etc/lxc/default.conf
echo "lxc.id_map =g 0 10000 65535" >> /etc/lxc/default.conf

4、修改lxc配置

echo "dell veth lxcbr0 10" >> /etc/lxc/lxc-usernet
cat /etc/lxc/lxc-usernet >/home/dell/.config/lxc/default.conf

5、修正权限

chmod +x /home/dell
chown -R dell:dell /home/dell

6、以dell身份登录,创建容器

非特权容器创建有点区别,它使用一个download模板,去下载指定的已打包好的完整系统,而非使用apt/yum

lxc-create -n my-ubuntu -t download

-n 意思是--name,容器的名字

-t 意思是 --template,指定使用哪个模板


接下来会出现文本对话,模板包含主流的发行版,centos/debian/ubuntu等,选择自己需要的发行版,版本号,CPU架构 。


ubuntu 对非特权容器支持很好,这里选择ubuntu trusty amd64,(centos 6 可以创建,但是启动遇到未知故障。)


也可以使用下面的命令,跳过对话,直接安装ubuntu非特权容器

lxc-create -t download -n my-ubuntu -- -d ubuntu -r trusty -a amd64

ubuntu模板系统默认的用户和密码均是ubuntu,可以sudo 。


7、查看刚刚创建的非特权容器

lxc-ls

8、启动非特权容器

lxc-start -n my-ubuntu


9、小技巧


a、让容器随系统启动

开机启动

$ echo "lxc.start.auto = 1" >>/home/dell/.local/share/lxc/my-ubuntu/config

开机延时启动

$ echo "lxc.start.delay = 5" >>/home/dell/.local/share/lxc/my-ubuntu/config


b、限制容器的资源

限CPU

$ echo "lxc.cgroup.cpu.shares  = 256" >>/home/dell/.local/share/lxc/my-ubuntu/config

限内存

$ echo "lxc.cgroup.memory.limit_in_bytes = 1024M" >>/home/dell/.local/share/lxc/my-ubuntu/config

限磁盘IO

$ echo "lxc.cgroup.blkio.weight = 500" >>/home/dell/.local/share/lxc/my-ubuntu/config



本文出自 “专注Linux 运维” 博客,请务必保留此出处http://purplegrape.blog.51cto.com/1330104/1528503

ubuntu 14.04 体验LXC非特权容器