在Ubuntu系统中使用LXC容器的教程

2016-03-31 15:31 55 1 收藏

在这个颜值当道,屌丝闪边的时代,拼不过颜值拼内涵,只有知识丰富才能提升一个人的内在气质和修养,所谓人丑就要多学习,今天图老师给大家分享在Ubuntu系统中使用LXC容器的教程,希望可以对大家能有小小的帮助。

【 tulaoshi.com - 服务器 】

在Ubuntu系统中使用LXC容器的教程

   使用容器来保证主机环境的安全性,这个概念早在十年前就已经存在(例如 FreeBSD 的 jail 虚拟化技术),但是直到最近,随着部署云架构需求越来越多,像 LXC 和 Docker 这种 Linux 下的容器才成为被关注的焦点。当然,由于主流厂商(云服务商如亚马逊主推 AWS,微软主推 Azure;发行版如红帽、Ubuntu等)组成的强大靠山,Docker 已经被放在媒体的聚光灯下面,其实,Docker 里面所谓的容器技术是由 LXC 提供的。

  你只是一个普通的 Linux 用户,那 Docker/LXC 能为你带来什么好处呢?容器可以将你的应用在不同的 Linux 发行版之间迁移。想像一下这个场景:你正在用的发行版是 Debian,你喜欢它的稳定性,同时你又想玩一款最新的 Ubuntu 游戏,你不需要在电脑上装双系统然后重启进入 Ubuntu,也不需要在 Debian 上跑一个耗资源的 Ubuntu 虚拟机,你只需要简单地生成一个 Ubuntu 容器就够了。

  抛开 Docker 的好处不谈,让我们聊一下 LXC 容器的好处:我可以使用 libvirt 提供的接口来管理 LXC,这些接口和 Docker 没有任何关系。如果你有使用基于 libvirt 库的管理工具(例如 virt-manager 和 virsh),你就可以使用它们来管理 LXC 容器。

  在这篇教程中,我只介绍标准 LXC 容器管理工具的命令行操作,来教你如何在 Ubuntu 下创建和管理 LXC 容器。

  Ubuntu 下安装 LXC

  使用下面的命令安装 LXC 在用户态的工具:

  代码如下:

  $ sudo apt-get install lxc

  然后检查当前内核是否支持 LXC。如果所有结果都是enable,说明内核支持:

  代码如下:

  $ lxc-checkconfig

2015616174955305.jpg (640×521)

  安装完 LXC 工具后,就能看到 LXC 自动创建了一块桥接网卡(lxcbr0,可以在 /etc/lxc/default.conf 中设置)。

2015616175017667.jpg (640×210)

  当你创建了 LXC 容器后,它的网口会自动链接到这个桥接网卡上,然后这个容器就能和外部世界通信了。

  创建 LXC 容器

  为了在指定环境下(比如 Debian Wheezy 64位)创建 LXC 容器,你需要一个相应的 LXC 模板。幸运的是 LXC 提供的工具集成了一整套现成的 LXC 模板,你可以在 /usr/share/lxc/templates 目录下找到它们。

  代码如下:

  $ ls /usr/share/lxc/templates

2015616175036284.jpg (593×101)

  一个 LXC 模板实质上就是一个脚本,用于创建指定环境下的容器。当你创建 LXC 容器时,你需要用到它们。

  比如你要新建 Ubuntu 容器,使用下面的命令即可:

  代码如下:

  $ sudo lxc-create -n -t ubuntu

  默认情况下,这个命令会创建一个最小的 Ubuntu 环境,版本号与你的宿主机一致,我这边是活泼的蝾螈(版本号是13.10),64位。

  当然你也可以创建任何你喜欢的版本,只要在命令里面加一个版本参数即可。举个例子,创建 Ubuntu 14.10 的容器:

  代码如下:

  $ sudo lxc-create -n -t ubuntu -- --release utopic

  这个命令就会下载安装指定环境下的软件包,创建新容器。整个过程需要几分钟时间,与容器的类型有关,所以,你可能需要耐心等待。

2015616175347149.jpg (640×350)

  下载安装完所有软件包后,LXC 容器镜像就创建完成了,你可以看到默认的登录界面。容器被放到 /var/lib/lxc/容器名 这个目录下,容器的根文件系统放在 /var/lib/lxc/容器名/rootfs 目录下。

  创建过程中下载的软件包保存在 /var/cache/lxc 目录下面,当你想另外建一个一样的容器时,可以省去很多下载时间。

  用下面的命令看看主机上所有的 LXC 容器:

  代码如下:

  $ sudo lxc-ls --fancy

NAME STATE IPV4 IPV6 AUTOSTART

  ------------------------------------

  test-lxc STOPPED - - NO

  使用下面的命令启动容器。参数-d将容器作为后台进程打开。如果没有指定这个参数,你可以在控制台界面上直接把容器的运行程序关闭(LCTT译注:Ctrl+C组合键)。

  代码如下:

  $ sudo lxc-start -n -d

  打开容器后,看看状态:

  代码如下:

  $ sudo lxc-ls --fancy

NAME STATE IPV4 IPV6 AUTOSTART

  -----------------------------------------

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/fuwuqi/)

  lxc RUNNING 10.0.3.55 - NO

  容器状态是运行中,容器 IP 是10.0.3.55。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/fuwuqi/)

  你也可以看到容器的网络接口(比如我这里是 vethJ06SFL)自动与 LXC 内部网桥(lxcbr0)连上了:

  代码如下:

  $ brctl show lxcbr0

2015616175417771.jpg (640×78)

  管理 LXC 容器

  我们已经学习了怎么创建和启动 LXC 容器,现在来看看怎么玩一个正在运行着的容器。

  第一步:打开容器控制台:

  代码如下:

  $ sudo lxc-console -n

2015616175442097.jpg (640×322)

  使用Crtl+a q组合键退出控制台。

  停止、删除容器:

  代码如下:

  $ sudo lxc-stop -n

  $ sudo lxc-destroy -n

  复制容器,用下面的命令:

  代码如下:

  $ sudo lxc-stop -n

  $ sudo lxc-clone -o -n

  常见问题

  这个小节主要介绍你们在使用 LXC 过程中碰到过的问题。

  创建 LXC 容器时遇到下面的错误:

  代码如下:

  $ sudo lxc-create -n test-lxc -t ubuntu

lxc-create: symbol lookup error: /usr/lib/x86_64-linux-gnu/liblxc.so.1: undefined symbol: cgmanager_get_pid_cgroup_abs_sync

  错误的原因是你运行了最新的 LXC,但是它所依赖的 libcgmanager 版本较老,两者不兼容。升级下 libcmanager 即可解决问题:

  代码如下:

  $ sudo apt-get install libcgmanager0

来源:https://www.tulaoshi.com/n/20160331/2050684.html

延伸阅读
标签: PHP
  PHP包含支持Expat 解析器的可选XML扩展。PHP中的XML相关函数可以让你创建一个解析器来处理有效的XML文档。如果你所使用的Apache版本为1.3.7后的版本,则不用添加任何函数库。所需要做的只是使用--with-xml配置PHP。 在PHP手册中有好几个创建基于PHP的XML解析器很好的例子。此外,New Riders的Web Application Development with PHP 4....
标签: Web开发
首先,在我进入实质性主题并解释如何建立类之前,我希望保证你知道“对象”。虽然你可以在程序中使用对象而不用知道其正确的规则,但我并不建议如此!对于对象的初学者,接下来的部分将让你了解其概念及内容。已经了解面向对象编程(OOP)的读者可以跳过这章节。 导论 l “对象是什么?”——对象通常代表某种实体,主要是一个变量和函数...
标签: ASP
  VBScript5中增加了许多新功能,最振奋人心的当属类和正则表达式的出现。以下是本人写的一个解析html代码的类。我是 学php的,语法有不习惯的地方,请大家多包含。 <% Class HTMLParse     ' 设置 Initialize 事件。     Private Sub Class_Initialize      &nbs...
标签: Java JAVA基础
你希望在jsp中建立一个邮件发送收取工具吗?下面将介绍的就是在jsp中建立一个邮件发送收取工具。在这篇文章中你可以了解到 Java Mail API的一些要点以及如何在 JSP中使用它。本文中还包括了在 JSP中使用 Java Mail的实例。 Java Mail是 JSP应用软件中相当强大的API。 阅读这篇文章需要对 JSP、 Java Beans和 Java Mail...
标签: 操作系统
自动登录Ubuntu Ubuntu默认是每次登录都是要输入用户名和密码的,这是基于安全方面的考虑,不过对于桌面版,大家都习惯自己的电脑能自动登录,类似Windows XP系统那样,通过一些设置可以实现Ubuntu自动登录。设置的方法是:点击“系统”—“系统管理”—“登录窗口” (需要输入管理员密码),然后在“安全”选项页—勾选(启用自动登录),...

经验教程

144

收藏

31
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部