我正在尝试设置一个服务器,我将运行多个应用程序.主要是内部的,但也可能是像Redmine这样的开源项目.它们都是在无头浏览器上运行的Rails /
Ruby应用程序/测试脚本.本质上,我试图在内部设置类似heroku的环境,并希望在这些正在运行的进程之间进行某种进程隔离.
我首先偶然发现了chroot监狱,然后了解了LXC. LXC似乎可以更好地控制普通的chroot监狱.我有一个Nginx前端,我想在隔离的容器中运行webserver应用程序进程(thin / mongrel / webrick).通常我们只是在本地IP地址上启动这些进程,并为它们安装Nginx代理.完成这项工作的最佳方法是什么?人们为容器设置静态桥接IP并且Nginx指向它吗?如何确保在容器中运行的Web服务器只能由外部主机访问?
关于LXC的文档似乎有点稀疏.指向一些好的教程或HOWTOs的指针将不胜感激.我的目标部署环境是一个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.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 with
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,并且可以在网络上访问.