在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


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


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

  创建 LXC 容器

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

  代码如下:

  $ ls /usr/share/lxc/templates


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

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

  代码如下:

  $ sudo lxc-create -n -t ubuntu


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

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

  代码如下:

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

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


  下载安装完所有软件包后,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

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

  lxc RUNNING 10.0.3.55 - NO

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

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

  代码如下:

  $ brctl show lxcbr0


  管理 LXC 容器

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

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

  代码如下:

  $ sudo lxc-console -n


  使用“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

时间: 2024-08-28 21:20:05

在Ubuntu系统中使用LXC容器的教程的相关文章

在Ubuntu系统中配置chroot环境的教程

  你可能会有很多理由想要把一个应用.一个用户或者一个环境与你的 linux 系统隔离开来.不同的操作系统有不同的实现方式,而在 linux 中,一个典型的方式就是 chroot 环境. 在这份教程中,我会一步一步指导你怎么使用 chroot 命令去配置一个与真实系统分离出来的独立环境.这个功能主要可以用于测试项目,以下这些步骤都在 Ubuntu 14.04 虚拟专用服务器(VPS)上执行. 学会快速搭建一个简单的 chroot 环境是一项非常实用的技能,绝大多数系统管理员都能从中受益. Chr

在Ubuntu系统中安装MariaDB数据库的教程_mariadb

MariaDB是一个开源数据库且100%与MySQL兼容,目标是替代MySQL数据库.MariaDB的背景 : 2008年,MySQL被后来被Oracle在2010年收购的Sun Microsystems收购了. 最初被Sun公司的收购由于符合项目的需要而受到MySQL社区的欢呼,但是这种情绪并没有持续太久,接下来被Oracle的收购,不幸期望远远低于预期.许多MySql的开发者离开了Sun和Oracle公司开始新的项目.在他们中间就有MySQL的创建者以及项目长期技术带头人之一的Michael

ubuntu系统中配置/安装SVN的教程

ubuntu安装和配置SVN第一步:安装apache2  libapache2-svn subversion sudo apt-get install apache2 sudo apt-get install subversion sudo apt-get install libapache2-svn 安装完后按照提示 Run '/etc/init.d/apache2 restart' to activate new configuration! 重启apache2第二步:创建SVN库和项目 s

库-libmodbus 在ubuntu系统中应用,

问题描述 libmodbus 在ubuntu系统中应用, 安装后,按照其中test中readme操作,gcc -libmodbus test.c -o test 不能执行成功,会说找不到modbus库.但是库在usr/local/lib中有.急求,谢谢各位! 解决方案 参考:https://groups.google.com/d/topic/libmodbus/cS_5RINJzg8 google现在需要代理访问

Ubuntu系统中使用火狐OS模拟器体验Firefox OS

西班牙已经发布了基于Firefox OS的手机,但是不是任何人能体验到,很都人都在苦苦等待,现在我们有另一种方法,不需要任何命令,没有纷繁复杂的安装步骤,在该文中,会教大家在ubuntu系统中一种轻松体验 Firefox OS. 只需在火狐浏览器中就可是实现: 火狐OS模拟器是为开发者使用的,用来测试他们的程序的的火狐浏览器插件,下面是该模拟器的功能: Push to Device Rotation simulation Basic geolocation API simulation Mani

Ubuntu系统中安装使用tcpdump来统计HTTP请求

  Ubuntu系统中安装使用tcpdump来统计HTTP请求          安装 tcpdump的安装还是比较讨厌的... 1.网上下载获得libpcap和tcpdump http://www.tcpdump.org/ 2.安装c编译所需包: 代码如下: apt-get install build-essential 3.安装 libpcap的前置: 代码如下: apt-get install flex,apt-get install bison 4.安装libpcap. tcpdump的

Ubuntu系统中Flash视频播放方法

  Ubuntu系统可用的Flash播放器很多,这里我们介绍最为常用的两种Flash播放软件,即官方的Adobe Flash Player和开源的Swfdec,助大家玩转Flash视频.本文介绍基于Ubuntu Desktop 9.04. 一.用Adobe Flash Player播放Flash视频 因Adobe Flash Player是非开放源代码软件,受Adobe版权制约,大多数Linux发行版默认并不提供Flash相关软件包.因而在Ubuntu系统中,要正常播放Flash动画,须手动安装

Ubuntu系统中如何列出USB设备?

USB是一个外部总线标准,用于规范电脑与外部设备的连接和通讯.http://www.aliyun.com/zixun/aggregation/17088.html">USB接口支持设备的即插即用和热插拔功能.USB接口可用于连接多达127种外设,如鼠标.调制解调器和键盘等.USB是在1994年底由英特尔.康柏.IBM.Microsoft等多家公司联合提出的,自1996年推出后,已成功替代串口和并口,并成为当今个人电脑和大量智能设备的必配的接口之一.从1994年11月11日发表了USB V0

如何在Ubuntu系统中使用Overlay文件系统

本文讲的是如何在Ubuntu系统中使用Overlay文件系统,[编者的话]本文用最简洁的语言介绍了如何在Ubuntu系统上运行Overlay文件系统,正如作者所说:AUFS是过去时代的王者,现在新的国王是Overlay.看来Overlay以后将是Docker存储的首选. 在上周的Docker伦敦大会上面,Jérôme Petazzoni分享了「深度研究Docker存储驱动」的演讲,非常棒.如果这件事还没有令我足够信服,那么Jessie Frazelle则完全说服了我,她在Qcon组织的演讲中宣称