首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Linux 容器的建立和简单管理-1

Linux 容器的建立和简单管理-1

cgroups 简介LXC 项目由一个 Linux 内核补丁和一些用户空间(userspace) 工具组成。这些工具使用由补丁增加的内核新特性,提供一套简化的工具来维护容器。2.6.29    版本后的 Linux 内核版本已经包含该补丁提供的大部分功能。所以强烈建议使用最新的内核源代码。LXC 在资源管理方面依赖 Linux 内核的 cgroups    (Control Groups) 系统,cgroups 系统是 Linux 内核提供的一个基于进程组的资源管理的框架,可以为特定的进程组限定可以使用的资源。它最初由 Google 的工程师提出,后来被整合进 Linux 内核。cgroups 也是 LXC 为实现虚拟化所使用的资源管理手段,可以说没有 cgroups 就没有 LXC。cgroups 文件系统结构见图 1 。
图 1.cgroups    文件系统结构相关名词解释控制族群(control group):控制族群就是一组按照某种标准划分的进程。cgroups 中的资源控制都是以控制族群为单位实现。一个进程可以加入到一个控制族群,也可以迁移到另一个控制族群。
层级(hierarchy)。控制族群可以组织成 hierarchical 的形式,既一颗控制族群树。控制族群树上的子节点控制族群是父节点控制族群的孩子,继承父控制族群的特定的属性。
子系统(subsytem)。一个子系统就是一个资源控制器,比如中央处理器子系统就是控制中央处理器时间分配的一个控制器。子系统必须附加(attach)到一个层级上才能起作用,一个子系统附加到某个层级以后,这个层级上的所有控制族群都受到这个子系统的控制。主要包括如下 9 个子系统:
  • blkio : 这个子系统为块设备设定输入/输出限制,比如物理设备(磁盘,固态硬盘,USB 等)。
  • cpu : 这个子系统使用调度程序提供对 中央处理器的 cgroup 任务访问。
  • cpuacct : 这个子系统自动生成 cgroup 中任务所使用的中央处理器报告。
  • cpuset : 这个子系统为 cgroup 中的任务分配独立中央处理器(在多核系统)和内存节点。
  • devices : 这个子系统可允许或者拒绝 cgroup 中的任务访问设备。
  • freezer : 这个子系统挂起或者恢复 cgroup 中的任务。
  • memory : 这个子系统设定 cgroup 中任务使用的内存限制,并自动生成由那些任务使用的内存资源报告。
  • net_cls : 这个子系统使用等级识别符(classid)标记网络数据包,可允许 Linux 流量控制程序(tc)识别从具体 cgroup 中生成的数据包。
  • ns :ns 子系统提供了一个将进程分组到不同名称空间的方法。在具体名称空间中,进程可彼此互动,但会与在其它名称空间中运行的进程隔绝。这些分开的名称空间在用于操作系统级别的虚拟化时,有时也称之为容器。
搭建第一个 LXC 虚拟计算机本文使用的 Linux 发行版是 Ubuntu 12.10 ,首先安装软件包:
1
#apt-get install lxc




安装软件包后要检查 Linux 发行版的内核对 LXC 的支持情况,可以使用下面命令 lxc-checkconfig 查看,见图 2 。
图 2.lxc-checkconfig 命令lxc-checkconfig 命令检查之后如果所有项目显示“enabled”表示可以直接使用 LXC。
建立一个 Ubuntu Server LXC 虚拟计算机系统使用如下命令构建(执行过程见图)3:
1
#lxc-create  -t  ubuntu -n cjhlxc1




说明这里使用的是 ubuntu 模板,模板文件保存在/usr/lib/lxc/templates/目录下,这个目录下还有其他模板,可以使用如下命令查看,命令输出如下:
1
2
3
4
5
6
7
8
9
# tree /usr/lib/lxc/templates/
/usr/lib/lxc/templates/
├── lxc-busybox
├── lxc-debian
├── lxc-fedora
├── lxc-opensuse
├── lxc-sshd
├── lxc-ubuntu
└── lxc-ubuntu-cloud




图    3.建立一个 Ubuntu Server LXC 系统说明:安装过程要持续一段时间,另外安装过程要保证互联网连接。
上面命令完成后, 会在 /var/lib/lxc 目录中, 产生虚拟计算机 cjhlxc1 ,它的目录结构见图 4 。
图 4.虚拟计算机    cjhlxc1 目录结构LXC 虚拟计算机的基本管理了解 LXC 虚拟计算机的管理命令LXC 常见命令说明见表 1
表 1 LXC 常见命令说明命令名称功能使用方法lxc-create用于创建一个容器lxc-create -n name [-f config_file]
-n 后面跟要创建的容器名字 例如:-n foo
-f 后面跟容器配置文件的路径
-t template 模板名称lxc-destroy用来销毁有关容器lxc-destroy -n name
-n 后面跟容器名字lxc-execute用于在一个容器执行应用程序lxc-execute -n name [-f config_file] [ -s KEY=VAL ]command
-n 后面跟容器名字(容器名字用于管理容器)例如:-n foo
  -f 后面跟容器配置文件的路径(如果没有配置文件,可以直接用-s 指定配置选项,如果什么都没有,系统采用默认策略)例如:-f foo.conf
  -s 后面跟配置键值对 例如:LXC.cgroup.cpu.shares=512
command 为要执行的命令 例如:/bin/bash
这个命令会 mount /proc 并且会自动创建/销毁容器。lxc-start用于在容器中执行给定命令lxc-start  -n name [-f config_file] [-c console_file] [-d] [-s KEY=VAL]           [command]
-d 将容器当做守护进程执行
-f  后面跟配置文件
-c 指定一个文件作为容器 console 的输出,如果不指定,将输出到终端
-s 指定配置
如果没有指定命令,lxc-start 将要运行 /sbin/initlxc-console打开容器控制台lxc-console -n name
-n 容器名
说明:更加详细的 lxc 命令列表和使用方法请读者参考官方网站文档( )。
图 5 是主要 LXC 命令执行过程的示意图
图 5.LXC    命令执行过程的示意图
返回列表