在ubuntu上运行linux容器(lxc)以隔离web服务器进程(ruby / thin)

我试图设置一个服务器,我将运行多个应用程序。 大多是内部的,但也可以是像Redmine这样的开源项目。 他们都将是在无头浏览器上运行的Rails / Ruby应用程序/testing脚本。 本质上,我试图在内部设置一个类似heroku的环境,并希望在这些正在运行的进程之间进行某种进程隔离。

我第一次偶然发现了chroot监狱,然后学习了LXC。 LXC似乎提供了一个更好的控制平原chroot监狱。 我有一个nginx前端,我想在孤立的容器中运行Web服务器应用程序进程(thin / mongrel / webrick)。 通常我们只需从本地IP地址开始这些进程,并为它们提供nginx代理。 什么是最好的方法来完成这个工作? 人们是否为容器设置了静态桥接IP,并让nginx指向它? 如何确保运行在容器中的web服务器只能在外部访问?

关于LXC的文档似乎有点稀疏。 指点一些很好的教程或HOWTOs将不胜感激。 我的目标部署环境是一个Lucid 64位框。

PS我不是一个Linux大师。 所以,温柔。

我们假设你自己的IP是192.168.1.1,你的网关是192.168.1.254,你的networking是192.168.1.0/24。

您应该在主机上创build一个桥接接口,就像在/ etc / network / interfaces文件中一样

auto lo iface lo inet loopback auto br0 iface br0 inet static address 192.168.1.1 network 192.168.1.0 netmask 255.255.255.0 broadcast 192.168.1.255 gateway 192.168.1.254 bridge_ports eth0 bridge_stp off bridge_fd 3 bridge_hello 1 bridge_maxage 5 

然后在LXC中安装一个基本的ubuntu:

  apt-get install lxc vlan bridge-utils python-software-properties screen mkdir /lxc debootstrap oeniric /lxc/ubuntu chroot ubuntu locale-gen en_US.UTF-8 apt-get update apt-get install lxcguest ssh passwd rm /etc/mtab ln -s /proc/mounts /etc/mtab exit 

用内容创build一个文件/lxc/ubuntu.config

  lxc.utsname = ubuntu lxc.tty = 8 lxc.rootfs = /lxc/ubuntu lxc.mount = /lxc/ubuntu.fstab lxc.network.type = veth lxc.network.flags = up lxc.network.link = br0 lxc.network.name = eth0 lxc.network.mtu = 1500 lxc.network.ipv4 = 192.168.1.10/24 

/lxc/ubuntu.fstab

  none /lxc/ubuntu/dev/pts devpts defaults 0 0 none /lxc/ubuntu/proc proc defaults 0 0 none /lxc/ubuntu/sys sysfs defaults 0 0 none /lxc/ubuntu/run tmpfs defaults 0 0 

添加到/lxc/ubuntu/etc/rc.local

  route add default gw 192.168.1.254 

编辑/lxc/ubuntu/etc/resolv.cont根据您的需要。

然后你可以创build你的机器

  lxc-create -f /lxc/ubuntu.config -n ubuntu 

然后开始

  lxc-start -n ubuntu 

或停止

  lxc-stop -n ubuntu 

或者最后摧毁

  lxc-destroy -n ubuntu 

您的新虚拟机将具有IP 192.168.1.10,并且可以在networking上访问。

如果您不想将外部IP地址提供给容器,或者不能:

LXC上的Debian Wiki页面提到了在主机上使用NAT的两种变体。 我正在使用libvirt的方法,迄今为止没有任何问题。

我不知道在Ubuntu下它是什么样的,但在那里可能没有那么大的差别。

维基页面可能看起来是一个很好的信息源,但维护者自己说,你应该参考文件/usr/share/doc/lxc/README.Debian获取最新的信息。