Я пытаюсь настроить сервер, на котором я буду запускать несколько приложений. В основном внутренние, но также могут быть проекты с открытым исходным кодом, такие как Redmine. Все они будут Rails / Ruby-приложениями / тестовыми скриптами, работающими в безголовых браузерах. По сути, я пытаюсь настроить внутреннюю среду, похожую на heroku, и мне нужна какая-то изоляция между этими запущенными процессами.
Сначала я наткнулся на тюрьмы chroot, а потом узнал о LXC. LXC, кажется, предлагает лучший контроль над обычными chroot-тюрьмами. У меня есть интерфейс nginx, и я хотел бы запускать процессы приложения веб-сервера (thin / mongrel / webrick) в изолированных контейнерах. Обычно мы просто запускаем эти процессы на локальном IP-адресе и подключаем к ним прокси-сервер nginx. Как лучше всего это сделать? Устанавливают ли люди статический мостовой IP-адрес для контейнера и указывают ли на него nginx? Как сделать так, чтобы веб-серверы, работающие в контейнерах, были доступны только для внешнего размещения?
Документация по LXC кажется немного скудной. Мы будем очень признательны за указатели на хорошие учебные руководства или HOWTO. Моя целевая среда развертывания - это 64-разрядная версия Lucid.
P.S. Я не гуру Linux. Так что будь нежным.
Предположим, что ваш собственный IP-адрес - 192.168.1.1, ваш шлюз - 192.168.1.254, а ваша сеть - 192.168.1.0/24.
Вы должны создать мостовой интерфейс на вашем хост-компьютере, как в / и т.д. / сеть / интерфейсы файл
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
а затем установите базовый ubuntu в LXC:
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 и будет доступна в сети.
Если вы не хотите давать контейнеру внешние IP-адреса или не можете:
В Страница Debian Wiki на LXC упоминает два варианта выполнения этого с помощью NAT на хост-машине. Я использую подход с libvirt и до сих пор не испытывал с этим проблем.
Я не знаю, каково это под Ubuntu, но, вероятно, там все не так уж и сильно.
Страница Wiki может показаться хорошим источником информации, но сам сопровождающий говорит, что вам лучше обратиться к файлу. /usr/share/doc/lxc/README.Debian
для получения актуальной информации.