LXC:Linux 容器工具(3)

至此,您正在运行一个适当的内核,安装了 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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3c1e60b8ebcdc7aa5f7fb345fde30252.html