运行 LXC 工具

至此,您正在运行一个适当的内核,安装了 LXC 实用程序,并且有了一个可用的环境,接下来便可以学习管理该环境的实例了。提示:LXC README 中更加详细地描述了这方面的大部分内容)。

LXC 使用 cgroup 文件系统来管理容器。在使用 LXC 之前,首先必须挂载这个文件系统:mount -t cgroup cgroup /cgroup。可以将 cgroup 文件系统挂载到任何地方。LXC 将使用 /etc/mtab 中挂载的第一个 cgroup 文件系统。

本文的后面将展示一些 LXC 基础知识和杂项内容,并讨论低级访问。

LXC 基础知识

对于使用 LXC 工具的基础知识,我们将看看:

创建容器
获得或列出)关于已有容器的信息
启动系统和应用程序容器
向容器中运行的进程发信号
暂停、恢复、停止和销毁容器
创建容器就是将一个名称与一个配置文件关联起来。该名称将用于管理容器:


lxc-create -n name -f configfile


这使得多个容器可以同时使用相同的配置文件。在配置文件中,可以指定容器的属性,例如它的主机名、网络、root 文件系统和 fstab。运行 lxc-sshd 脚本该脚本创建一个配置)之后,ssh 容器配置如下所示:

lxc.utsname = my_ssh_container
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.ipv4 = 10.0.2.16/24
lxc.network.name = eth0
lxc.mount = ./fstab
lxc.rootfs = ./rootfs

无论配置文件如何,用 LXC 工具启动的容器有自己的系统进程视图,以及自己的挂载树和可用的进程间通信IPC)资源视图。

除了这些以外,当一个容器启动时,配置中未提到的任何类型的资源都被认为是与主机共享。这使管理员可以简洁地指定容器与其主机之间的关键不同点,并且使配置具有可移植性。

列出关于已有容器的信息对于管理已有容器非常重要。显示一个特定容器的状态:

lxc-info -n name


显示属于一个容器的进程:

lxc-info -n name

 启动
LXC 根据容器类型的不同而有所不同:一种是系统容器,一种是应用程序容器。系统容器类似于虚拟机。与真正的虚拟化相比,虽然它们的隔离性要低一些,但是开销也降低了。直接原因是每个容器使用相同的 Linux 内核。为了类似于虚拟机,系统容器和 Linux 发行版一样在同一个地方启动,即通过运行 init 程序:


lxc-start -n name init

与系统容器相比,应用程序容器只是创建用于隔离一个应用程序的单独的名称空间。启动一个应用程序容器:
lxc-execute -n name cmd


发信号
将一个信号发送到在一个容器中运行的所有进程:

lxc-kill -n name -s SIGNAL

暂停
暂停一个容器在概念上类似于将 SIGSTOP 信号发送到一个容器中的所有进程。但是,发送虚假的 SIGSTOP 信号可能会迷惑一些程序。所以,LXC 通过 cgroup 接口使用 Linux 进程冻结器process freezer):

lxc-freeze -n name


恢复
要恢复一个被冻结的容器:

lxc-unfreeze -n name

停止
停止一个容器将导致该容器中启动的所有进程全体死亡,并且清理容器:

lxc-stop -n name


销毁
销毁容器是指删除通过 lxc-create 步骤与名称关联的配置文件和元数据:


lxc-destroy -n name


相关内容