Contenedores LXC en un VPS OpenVZ

Contenedores LXC en un VPS OpenVZ

Estoy intentando ejecutar LXC en una VPN alojada en OpenVZ. He intentado hacer esto con múltiples tipos de imágenes, ubuntu. centos, debian... sin suerte. LXC se instala correctamente pero los contenedores no se inician debido a la conexión en red, ¡parece que esto tiene que ver con el puente de interfaces!

¿Alguien ha tenido problemas similares a este? ¿Alguien sabe si esto es una limitación de OpenVZ?

A partir de una nueva instalación de 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.

Y probando:

sudo brctl addbr lxcbr0
  add bridge failed: Invalid argument

Respuesta1

OpenVZ es una tecnología de virtualización de sistemas operativos, al igual que LXC y Docker, pero basada en varios parches del kernel, y muchos de ellos nunca se integran con el kernel principal.

OpenVZ se basó en kernels antiguos (2.6.x) que ahora no tienen muchas cosas necesarias para administrar contenedores (cgroups principalmente). Desafortunadamente, no puedes ejecutar contenedores LXC dentro de un entorno virtual OpenVZ.

Respuesta2

Para no disminuir las otras respuestas (ya que afirman correctamente que los contenedores OpenVZson contenedores) pero mira este interesante enlace: Docker en OVZ CT("Desde el kernel OpenVZ 042stab105.4 es posible ejecutar Docker dentro de contenedores. Este artículo describe cómo hacerlo.")

Puede que ofrezca o no algunas soluciones a su problema, pero en teoría es posible usar cgroups en un CT (en núcleos más nuevos que042puñalada105.4y mediante el uso de un bastante nuevovzctl). Básicamente necesitarás:

  • verifique la configuración de su kernel: pruebe lxc-checkconfigcon el kernel dado o utilícelo CONFIG=/boot/config-2.6.32-openvz-042stab108.2-amd64 lxc-checkconfigcon cualquier kernel instalado.

Si todo parece estar bien, puede seguir adelante y:

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

Y monte cgroups personalizados en el 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

De hecho, es una construcción divertida, pero los controles ovz y cgroups no son intrínsecamente incompatibles (muchas características de cgroup son funciones auxiliares vacías, por ejemplo, no hacen nada pero no arrojan mensajes de error).

Descargo de responsabilidad: aún no lo he probado (a mi kernel le falta el espacio de nombres cgroup).

Otro enlace útil eseste comentario del rastreador de problemas de Dockersobre cómo compilar su kernel OVZ con las características requeridas.

información relacionada