Contêineres LXC em um VPS OpenVZ

Contêineres LXC em um VPS OpenVZ

Estou tentando executar o LXC em uma VPN hospedada no OpenVZ. Tentei fazer isso com vários tipos de imagens, Ubuntu. centos, debian... sem sorte. O LXC é instalado corretamente, mas os contêineres não iniciam devido à rede, parece que isso tem a ver com a ponte de interfaces!

Alguém já teve algum problema semelhante a este? Alguém sabe se isso é uma limitação do OpenVZ?

A partir de uma nova instalação do Ubuntu 14.04:

sudo apt-get update 
sudo apt-get install lxc
sudo lxc-create -n p1 -t ubuntu 
sudo lxc-start -n p1 --logfile log.txt
cat log.txt
    lxc-start 1434379565.265 ERROR    lxc_conf - conf.c:instantiate_veth:2949 - failed to create veth pair (vethP4LPC8 and vethO6MP73): Operation not supported
    lxc-start 1434379565.265 ERROR    lxc_conf - conf.c:lxc_create_network:3261 - failed to create netdev
    lxc-start 1434379565.265 ERROR    lxc_start - start.c:lxc_spawn:826 - failed to create the network
    lxc-start 1434379565.265 ERROR    lxc_start - start.c:__lxc_start:1080 - failed to spawn 'p1'
    lxc-start 1434379565.265 ERROR    lxc_start_ui - lxc_start.c:main:342 - The container failed to start.
    lxc-start 1434379565.265 ERROR    lxc_start_ui - lxc_start.c:main:346 - Additional information can be obtained by setting the --logfile and --logpriority options.

E tentando:

sudo brctl addbr lxcbr0
  add bridge failed: Invalid argument

Responder1

OpenVZ é uma tecnologia de virtualização de sistema operacional, assim como LXC e Docker, mas baseada em vários patches de kernel, e muitos nunca se integram ao kernel principal.

O OpenVZ era baseado em kernels antigos (2.6.x) que não possuem muitas coisas necessárias para gerenciar contêineres agora (principalmente cgroups). Infelizmente, você não pode executar contêineres LXC dentro de um ambiente virtual OpenVZ.

Responder2

Para não diminuir as outras respostas (já que afirmam corretamente que os contêineres OpenVZsão contêineres) mas veja este link interessante: Docker em OVZ CT("Desde o kernel OpenVZ 042stab105.4 é possível executar o Docker dentro de contêineres. Este artigo descreve como.")

Pode ou não oferecer algumas soluções para o seu problema, mas em teoria é possível usar cgroups em um CT (em kernels mais novos que042stab105.4e usando um novovzctl). Basicamente você precisará de:

  • verifique a configuração do seu kernel: tente lxc-checkconfigno kernel fornecido ou use CONFIG=/boot/config-2.6.32-openvz-042stab108.2-amd64 lxc-checkconfigpara qualquer kernel instalado.

Se parecer que está tudo bem, você pode seguir em frente e:

vzctl set $veid --save --features bridge:on --netif_add eth0 --netfilter full --devnodes net/tun:rw

E monte cgroups customizados no CT:

mount -t tmpfs tmpfs /sys/fs/cgroup
mkdir /sys/fs/cgroup/freezer,devices
mount -t cgroup cgroup /sys/fs/cgroup/freezer,devices -o freezer,devices
mkdir /sys/fs/cgroup/cpu,cpuacct,cpuset
mount -t cgroup cgroup /sys/fs/cgroup/cpu,cpuacct,cpuset/ -o cpu,cpuacct,cpuset

Na verdade, é uma construção engraçada, mas os controles ovz e cgroups não são inerentemente incompatíveis (muitos recursos do cgroup são funções stub vazias, por exemplo, não fazem nada, mas não emitem mensagens de erro).

Isenção de responsabilidade: ainda não tentei (meu kernel não possui o namespace cgroup).

Outro link útil éeste comentário do rastreador de problemas do Dockersobre como compilar seu kernel OVZ com os recursos necessários.

informação relacionada