当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

我试图在服务器上运行多个应用程序。主要是内部项目,但也可能是Redmine等开源项目。它们都是在无头浏览器上运行的Rails /Ruby应用程序/测试脚本。本质上,我试图在内部设置类似于heroku的环境,并希望在这些正在运行的进程之间进行某种程度的进程隔离。

我首先偶然发现了chroot监狱,然后了解了LXC。 LXC似乎可以更好地控制普通chroot监狱。我有一个nginx前端,我想在隔离的容器中运行webserver应用程序进程(thin /mongrel /webrick)。通常,我们只是简单地从本地ip地址开始这些过程,并使用nginx代理。完成这项工作的最佳方法是什么?人们是否为容器设置了静态桥接IP并让nginx指向它?如何确保容器中运行的Web服务器只能由外部主机访问?

有关LXC的文档似乎很少。指向一些很好的教程或HOWTO的指针将不胜感激。我的目标部署环境是Lucid 64位盒。

附言我不是Linux专家。所以,要温柔。

最佳方法

假设您自己的IP为192.168.1.1,网关为192.168.1.254,网络为192.168.1.0/24。

您应该在主机上建立桥接接口,例如在/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

使用内容创建文件/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。

然后,您可以使用

 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,并且可以在网络上访问。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8241.html,未经允许,请勿转载。