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

wangyivip88

wangyivip88

2016-03-31 15:31

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

在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 目录下。

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

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

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

  代码如下:

  $ sudo lxc-ls --fancy

NAME STATE IPV4 IPV6 AUTOSTART

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

  test-lxc STOPPED - - NO

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

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

  代码如下:

  $ 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

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

展开更多 50%)
分享

猜你喜欢

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

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

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

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

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在Linux系统中使用dupeGuru查找并移除重复文件的教程

服务器
在Linux系统中使用dupeGuru查找并移除重复文件的教程

在Linux系统中使用iptraf进行网络监控

服务器
在Linux系统中使用iptraf进行网络监控

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

在Linux系统中使用Fish Shell的入门指引

服务器
在Linux系统中使用Fish Shell的入门指引

在Linux系统中使用蓝牙功能的基本方法

服务器
在Linux系统中使用蓝牙功能的基本方法

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

iphone安全问题忘了怎么办

iphone安全问题忘了怎么办

玫瑰金iPhone6s开箱图赏

玫瑰金iPhone6s开箱图赏
下拉加载更多内容 ↓