最新消息:阿啰哈,本人90后,目前单身,欢迎妹子们来撩!.(。→‿←。)

用LXC创建非特权容器

LXC是Linux containers的简称,它是基于容器的操作系统层级的轻量级虚拟化技术。没有虚拟化CPU,也没有虚拟化硬盘,与物理机共享内核,其性能与物理机几乎一致。

几个官方的测试数据(https://insights.ubuntu.com/2015/05/18/lxd-crushes-kvm-in-density-and-speed/):

  • 相同系统资源的情况下,LXC的虚拟机密度是KVM的14.5倍
  • LXC启动实例的速度比KVM快94%
  • LXC的延迟比KVM少57%

非特权容器:普通用户所创建的容器;限制更多,但相对宿主机来说会更安全;
特权容器:超级用户所创建的容器;

安装LXC:
Ubuntu: sudo apt-get install lxc

说明:由于我另行指定了容器的安装路径为/tmp/linux,所以所有涉及到容器的管理操作都手工加了-P /tmp/linux(也可修改配置文件)。大家可以不指定此路径,非特权容器默认会被安装到~/.local/share/lxc/中,特权容器默认会安装在/var/lib/lxc/

  • /var/lib/lxc (特权容器的默认路径)
  • /var/lib/lxcsnap (特权快照的默认路径)
  • /var/cache/lxc (特权模板缓存的默认路径)
  • $HOME/.local/share/lxc (非特权容器的默认路径)
  • $HOME/.local/share/lxcsnap (非特权快照的默认路径)
  • $HOME/.cache/lxc (非特权模板缓存的默认路径)

The default path, also called lxcpath can be overridden on the command line with the -P option or once and for all by setting "lxcpath = /new/path" in /etc/lxc/lxc.conf (or $HOME/.config/lxc/lxc.conf for unprivileged containers).

1、在/tmp/linux目录下创建一个名为c1的CentOS 6 amd64的非特权容器(:会从官方的https://images.linuxcontainers.org/images/下载镜像文件,速度奇慢无比以致令人无语,所以宿主机[物理机]需要能上网)
$ lxc-create -P /tmp/linux -n c1 -t download -- -d centos -r 6 -a amd64
或 $ lxc-create -P /tmp/linux -n c1 -t download(:会以列表的方式显示出可用的镜像文件以供用户选择下载安装,有CentOS、Ubuntu、Gentoo、Debian、Oracle等)

2、以守护进程的方式启动该容器并放在后台运行
$ lxc-start -P /tmp/linux -n c1 -d

3、以普通用户身份登陆到已经运行的容器中(:官方称为了安全起见,CentOS的root密码默认为空,无法登陆进去,必须使用下面这种方法先以普通用户登陆并切换至root,再修改root的密码)
$ lxc-attach -P /tmp/linux/ -n c1
修改root的密码
c1:/$ su -
[[email protected] ~]# passwd

4、连接到该容器的console界面,并以root用户和新改好的密码登陆
$ lxc-console -P /tmp/linux -n c1
此时,可以像正常的操作系统一样使用容器。

5、列出/tmp/linux下安装的所有容器
$ lxc-ls -P /tmp/linux/

6、查看指定容器的状态信息
$ lxc-info -P /tmp/linux -n c1
Name:           u1
State:          RUNNING
PID:            14515
IP:             10.0.3.214
CPU use:        2.76 seconds
BlkIO use:      0 bytes
Memory use:     34.09 MiB
KMem use:       0 bytes
Link:           veth3YGYUM
 TX bytes:      16.13 KiB
 RX bytes:      85.68 KiB
 Total bytes:   101.81 KiB

7、暂停容器
$ lxc-freeze -P /tmp/linux -n c1
查看容器的状态
$ lxc-info -P /tmp/linux/ -n c1
Name:           c1
State:          FROZEN
PID:            13406
IP:             10.0.3.2
CPU use:        2.76 seconds
BlkIO use:      0 bytes
Memory use:     37.29 MiB
KMem use:       0 bytes
Link:           vethNJYTJK
 TX bytes:      191.95 KiB
 RX bytes:      4.81 MiB
 Total bytes:   5.00 MiB
恢复容器
$ lxc-unfreeze -P /tmp/linux -n c1

8、关闭容器(注:相当于关机)
$ lxc-stop -P /tmp/linux/ -n c1
查看容器状态
$ lxc-info -P /tmp/linux/ -n c1
Name:           c1
State:          STOPPED

9、克隆(复制)容器,前提是容器必须先关机!克隆时保留主机名,保持原容器和新容器名称相同。
$ lxc-clone -p /tmp/linux/ -P /tmp/ -K -o c1 -n c1
Created container c1 as copy of c1
$ lxc-ls -P /tmp/linux/ (查看)
c1
$ lxc-info -P /tmp/linux/ -n c1 (查看)
Name: c1
State: STOPPED

10、摧毁(删除)容器,前提是容器必须先关机!
$ lxc-destroy -P /tmp -n c1

参考文献:
https://help.ubuntu.com/lts/serverguide/lxc.html
https://www.stgraber.org/
https://insights.ubuntu.com/2015/05/18/lxd-crushes-kvm-in-density-and-speed/

转载请注明:林志斌 » 用LXC创建非特权容器

发表评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址