阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

如何在 Ubuntu 上使用 LXC 容器

216次阅读
没有评论

共计 4397 个字符,预计需要花费 11 分钟才能阅读完成。

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

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

如何在 Ubuntu 上使用 LXC 容器

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

使用 Docker/LXC 迅速启动一个桌面系统  http://www.linuxidc.com/Linux/2014-08/105652.htm

Linux 容器技术 -LXC 相关技术知识介绍 http://www.linuxidc.com/Linux/2012-07/66523.htm

Linux 容器技术 -LXC 创建虚拟机的执行过程分析 http://www.linuxidc.com/Linux/2012-07/66522.htm

利用 shell 脚本监控 LXC 应用容器内的应用 http://www.linuxidc.com/Linux/2012-07/64525.htm

Cgroup 和 LXC(Linux container)安装详解(CentOS 6.2) 系统 http://www.linuxidc.com/Linux/2012-02/55420.htm

Linux 容器虚拟技术 LXC 简明手册 http://www.linuxidc.com/Linux/2011-06/37349.htm

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

Ubuntu 下安装 LXC

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

  1. $ sudo aptget install lxc

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

  1. $ lxccheckconfig

如何在 Ubuntu 上使用 LXC 容器

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

如何在 Ubuntu 上使用 LXC 容器

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

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-11/109929p2.htm

创建 LXC 容器

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

  1. $ ls /usr/share/lxc/templates

如何在 Ubuntu 上使用 LXC 容器

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

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

  1. $ sudo lxccreate n <containername>t ubuntu

如何在 Ubuntu 上使用 LXC 容器

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

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

  1. $ sudo lxccreate n <containername>t ubuntu release utopic

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

如何在 Ubuntu 上使用 LXC 容器

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

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

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

  1. $ sudo lxcls fancy

  1. NAME STATE IPV4 IPV6 AUTOSTART
  2. ————————————
  3. testlxc STOPPED NO

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

  1. $ sudo lxcstart n <containername>d

打开容器后,看看状态:

  1. $ sudo lxcls fancy

  1. NAME STATE IPV4 IPV6 AUTOSTART
  2. —————————————–
  3. lxc RUNNING 10.0.3.55 NO

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

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

  1. $ brctl show lxcbr0

如何在 Ubuntu 上使用 LXC 容器

管理 LXC 容器

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

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

  1. $ sudo lxcconsole n <containername>

如何在 Ubuntu 上使用 LXC 容器

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

停止、删除容器:

  1. $ sudo lxcstop n <containername>
  2. $ sudo lxcdestroy n <containername>

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

  1. $ sudo lxcstop n <containername>
  2. $ sudo lxcclone o <containername>n <newcontainername>

常见问题

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

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

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


  1. lxccreate: symbol lookup error:/usr/lib/x86_64linuxgnu/liblxc.so.1:undefined symbol: cgmanager_get_pid_cgroup_abs_sync

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

  1. $ sudo aptget install libcgmanager0

更多 Ubuntu 相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

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

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

如何在 Ubuntu 上使用 LXC 容器

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

使用 Docker/LXC 迅速启动一个桌面系统  http://www.linuxidc.com/Linux/2014-08/105652.htm

Linux 容器技术 -LXC 相关技术知识介绍 http://www.linuxidc.com/Linux/2012-07/66523.htm

Linux 容器技术 -LXC 创建虚拟机的执行过程分析 http://www.linuxidc.com/Linux/2012-07/66522.htm

利用 shell 脚本监控 LXC 应用容器内的应用 http://www.linuxidc.com/Linux/2012-07/64525.htm

Cgroup 和 LXC(Linux container)安装详解(CentOS 6.2) 系统 http://www.linuxidc.com/Linux/2012-02/55420.htm

Linux 容器虚拟技术 LXC 简明手册 http://www.linuxidc.com/Linux/2011-06/37349.htm

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

Ubuntu 下安装 LXC

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

  1. $ sudo aptget install lxc

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

  1. $ lxccheckconfig

如何在 Ubuntu 上使用 LXC 容器

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

如何在 Ubuntu 上使用 LXC 容器

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

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-11/109929p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计4397字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中