转载

容器技能get!Ubuntu中LXC的搭建、管理

LXC是Linux containers的简称,是一种基于容器的操作系统层级的虚拟化技术。LXC可以在操作系统层次上为进程提供的虚拟的执行环境即容器。与传统的硬件抽象层次的虚拟化技术相比有以下优势:减少虚拟化的开销;快速部署。

容器技能get!Ubuntu中LXC的搭建、管理

简言之,LXC是一款轻量级的虚拟化技术,方便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。但这并不意味着,传统的虚拟化技术将会被取代。这里将会为大家介绍如何安装、配置、管理Linux容器。

安装LXC

这里的系统环境为Ubuntu 14.10。(图片来自:linoxide.com)

首先要安装LXC,可执行如下命令(如若为基于红帽的centos等系统,请使用yum命令)。

sudo apt-get install lxc

创建LXC

通过 lxc-create命令创建一个容器。

sudo lxc-create -t  <template> -n <container-name>

sudo lxc-create -t ubuntu -n Ubuntu1

然后等待ubuntu运行,需要要花费几分钟。

容器技能get!Ubuntu中LXC的搭建、管理

容器技能get!Ubuntu中LXC的搭建、管理

现在我们就已经有了一个ubuntu的容器。

我们来看一下现在已经拥有的容器列表。

sudo lxc-ls

poornima@poornima- Lenovo :~/$ sudo lxc-ls

[sudo] password for poornima:

Ubuntu1

查看容器使用详情。

sudolxc-info -n <container-name>

poornima@poornima- Lenovo :~/$ sudo lxc-info -n Ubuntu1

Name: Ubuntu1

State: STOPPED

可见容器的目前状态时尚未启动,我们可以启动容器。

lxc-start -n <container-name>

或者

lxc-start -d -n <container-name>  to start the container in the background.

确认容器是否启动

poornima@poornima-Lenovo:~/$ sudo lxc-info -n Ubuntu1

Name: Ubuntu1

State: RUNNING

PID: 2969

IP: 10.0.3.150

CPU use: 1.27 seconds

BlkIO use: 20.66 MiB

Memory use: 26.27 MiB

KMem use: 0 bytes

Link: vethVFLSOP

TX bytes: 1.80 KiB

RX bytes: 4.94 KiB

Total bytes: 6.74 KiB

由于要登录容器,所以我们需要一个LXC控制台

lxc-console -n <container-name>

poornima@poornima-Lenovo:~/$ sudo lxc-console -n Ubuntu1

Connected to tty 1 Type <Ctrl+a q> to exit the console, <ctrl+a ctrl+a=""> to enter Ctrl+a itself

Ubuntu 14.10 Ubuntu1 tty1

Ubuntu1 login: ubuntu

Password:

Last login: Thu Aug 27 12:05:59 IST 2015 on lxc/tty1

Welcome to Ubuntu 14.10 (GNU/Linux 3.16.0-23-generic i686)

* Documentation: https://help.ubuntu.com/

ubuntu@Ubuntu1:~/$

如果你需要通知容器运行的时候,可以输入命令。

xc-stop -n <container-name>

poornima@poornima-Lenovo:~/$ sudo lxc-stop -n Ubuntu1

poornima@poornima-Lenovo:~/$ sudo lxc-info -n Ubuntu1

Name: Ubuntu1

State: STOPPED

暂停freeze、恢复unfreeze容器命令

lxc-freeze -n <container-name>

poornima@poornima-Lenovo:~/$ sudo lxc-freeze -n Ubuntu1

poornima@poornima-Lenovo:~/$ sudo lxc-info -n Ubuntu1

Name: Ubuntu1

State: FROZEN

PID: 2969

IP: 10.0.3.150

CPU use: 1.48 seconds

BlkIO use: 21.42 MiB

Memory use: 26.96 MiB

KMem use: 0 bytes

Link: vethVFLSOP

TX bytes: 2.63 KiB

RX bytes: 5.80 KiB

Total bytes: 8.43 KiB

lxc-unfreeze -n <container-name>

拷贝容器

lxc-clone -o <existing container> -n <new container>

poornima@poornima- Lenovo :~/$ sudo lxc-clone -o Ubuntu1 -n Ubuntu-clone

Created container Ubuntu-clone as copy of Ubuntu1

poornima@poornima-Lenovo:~/$ sudo lxc-ls

Ubuntu-clone Ubuntu1

关闭容器

ubuntu@Ubuntu1:~/$ sudo poweroff

[sudo] password for ubuntu:

Broadcast message from ubuntu@Ubuntu1

(/dev/lxc/tty1) at 12:17 ...

The system is going down for power off NOW!

查看容器状态

poornima@poornima-Lenovo:~/$ sudo lxc-info -n Ubuntu1

Name: Ubuntu1

State: STOPPED

快照(snapshot)的创建和恢复

lxc-snapshot  -n <container-name>

poornima@poornima-Lenovo:~/$ sudo lxc-snapshot -n Ubuntu1

lxc_container: lxccontainer.c: lxcapi_snapshot: 2953 Snapshot of directory-backed container requested.

lxc_container: lxccontainer.c: lxcapi_snapshot: 2954 Making a copy-clone. If you do want snapshots, then

lxc_container: lxccontainer.c: lxcapi_snapshot: 2955 please create an aufs or overlayfs clone first, snapshot that

lxc_container: lxccontainer.c: lxcapi_snapshot: 2956 and keep the original container pristine.

这些快照将被存储在 /var/lib/lxc目录下。

poornima@poornima-Lenovo:~/$ sudo lxc-snapshot --name Ubuntu1 --list

snap0 (/var/lib/lxc/Ubuntu1/snaps) 2015:08:27 12:20:41

配置

所有已创建的容器默认存储在/var/lib/lxc目录下。

删除

你可以删除容器。如果你已经创建了快照,那么也需要将快照一同删除。

lxc-destroy -n <container-name>

poornima@poornima-Lenovo:~/$ sudo lxc-destroy --name=Ubuntu-clone

poornima@poornima-Lenovo:~/$ sudo lxc-info --name=Ubuntu-clone

Ubuntu-clone doesn't exist

运用web控制器管理容器

如果你并不习惯使用Linux命令,那么你可以选择用浏览器模式的控制器来控制自己的Linux容器。

安装相应的控制面板

wget http://lxc-webpanel.github.io/tools/install.sh -O - | bash

root@poornima-Lenovo:/home/poornima# wget http://lxc-webpanel.github.io/tools/install.sh -O - | bash

--2015-08-27 13:15:13-- http://lxc-webpanel.github.io/tools/install.sh

Resolving lxc-webpanel.github.io (lxc-webpanel.github.io)... 103.245.222.133

Connecting to lxc-webpanel.github.io (lxc-webpanel.github.io)|103.245.222.133|:80... connected.

HTTP request sent, awaiting response... 200 OK

Length: 2678 (2.6K) [application/x-sh]

Saving to: STDOUT

容器技能get!Ubuntu中LXC的搭建、管理

Installing requirement...

100%[======================================>] 2,678 --.-K/s in 0.003s

2015-08-27 13:15:14 (867 KB/s) - written to stdout [2678/2678]

Cloning LXC Web Panel...

Cloning into '/srv/lwp'...

remote: Counting objects: 188, done.

remote: Total 188 (delta 0), reused 0 (delta 0), pack-reused 188

Receiving objects: 100% (188/188), 172.76 KiB | 49.00 KiB/s, done.

Resolving deltas: 100% (79/79), done.

Checking connectivity... done.

Installation complete!

Adding /etc/init.d/lwp...

Done

Starting  server ...done.

Connect you on http://your-ip-address:5000/

默认的用户名和密码为: admin/admin

容器技能get!Ubuntu中LXC的搭建、管理

容器技能get!Ubuntu中LXC的搭建、管理
Web界面

这样一来,就完成了对LXC的配置。同时,你可以选择使用Linux命令,或者在web端控制Linux容器

正文到此结束
Loading...