本周是成胖子每周一博的第七周:)
##前言
我的工作是做路由器开发的.为了实现一次开发在不同平台的快速部署,我们尝试在路由器运行LXC容器.通过它来实现我们的虚拟化目标,我们通过打开内核开关,交叉编译lxc工具以及制作基于busybox的简单文件系统,已经达到了基本目标.同时我们在容器内移植了openwrt的opkg功能,使得容器内部可以通过opkg的方式快速安装ipk,从而在传统路由器上快速实现了openwrt的特色功能o.
虽然基本功能可以使用了,但是我的LXC基础还是很薄弱.周末花点时间看看.本文主要基于LXC的核心开发者之一stephan Graber的博客.
##第一个Ubuntu容器
###什么是LXC? LXC是linux内核提供给用户空间的接口.通过强大的API和简单的工具,用户可以轻松创建和管理容器.博客的作者stephan Graber是LXC的主要维护者之一.
###安装LXC
LXC 1.0是LXC的第一个长期稳定版本.Ubuntu的用户可以直接通过命令行安装LXC,其他用户可以下载LXC源码然后手动编译. 命令行安装如下:
sudo apt-get install lxc lxctl lxc-templates
手动安装如下
git clone git://github.com/lxc/lxc
cd lxc
sh autogen.sh
# You will probably want to run the configure script with --help and then set the paths
./configure
make
sudo make install
###运行LXC
运行LXC的过程很简单,只需要简单几个命令,如下:
# 建立使用"ubuntu"模板建立一个名为"p1"的容器.Ubuntu版本和体系结构与主机相同.
# 可以使用"--help"查询所有选项
sudo lxc-create -t ubuntu -n p1
# 在后台启动一个已经创建的容器
sudo lxc-start -n p1 -d
# 使用以下方式进入容器
## 进入一个容器的控制台(使用ctrl-a + q 来脱离容器的控制台)
sudo lxc-console -n p1
## Spawn bash directly in the container (bypassing the console login), requires a >= 3.8 kernel
## 直接进入容器中的bash
sudo lxc-attach -n p1
## SSH 登陆容器
sudo lxc-info -n p1
ssh ubuntu@<ip from lxc-info>
# 使用以下方式关闭容器
## 在容器内部关闭容器
sudo poweroff
## 在容器外部彻底关闭容器
sudo lxc-stop -n p1
## 在容器外部杀死容器进程
sudo lxc-stop -n p1 -k
相信以上的命令,大家基本都能直接看懂.试两把也就熟悉了.Ubuntu12.04之后的版本是直接支持所有LXC的所有特性的.
当容器建立之后,容器内的网络就已经配置完成了.这个时候HostOs将会建立一个二层桥设备lxcbr0
,同时建立一个DHCP服务器为容器内的系统提供服务.
##尾记 本周时间比较匆忙,我和我媳妇搭建了我们自己的博客小站,欢迎大家访问.传送门