LXC-Container auf einem OpenVZ VPS

LXC-Container auf einem OpenVZ VPS

Ich versuche, LXC auf einem VPN auszuführen, das in OpenVZ gehostet wird. Ich habe dies mit mehreren Image-Varianten versucht, Ubuntu, CentOS, Debian ..., ohne Erfolg. LXC wird korrekt installiert, aber Container können aufgrund der Netzwerkverbindung nicht gestartet werden. Dies scheint mit der Überbrückung von Schnittstellen zu tun zu haben!

Hat jemand ähnliche Probleme gehabt? Weiß jemand, ob dies eine Einschränkung von OpenVZ ist?

Ausgehend von einer Neuinstallation von 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.

Und versuchen:

sudo brctl addbr lxcbr0
  add bridge failed: Invalid argument

Antwort1

OpenVZ ist eine Technologie zur Betriebssystemvirtualisierung, genau wie LXC und Docker, basiert jedoch auf verschiedenen Kernel-Patches und viele lassen sich nie in den Mainstream-Kernel integrieren.

OpenVZ basierte auf alten Kerneln (2.6.x), die nicht viele Dinge enthielten, die heute zum Verwalten von Containern erforderlich sind (hauptsächlich cgroups). Leider können Sie LXC-Container nicht in einer virtuellen OpenVZ-Umgebung ausführen.

Antwort2

Ohne die anderen Antworten herabzusetzen (da sie richtigerweise angeben, dass OpenVZ-Containersind Container), aber sehen Sie sich diesen interessanten Link an: Docker in OVZ CT(„Seit dem OpenVZ-Kernel 042stab105.4 ist es möglich, Docker in Containern auszuführen. Dieser Artikel beschreibt, wie das geht.“)

Es kann einige Lösungen für Ihr Problem bieten oder auch nicht, aber theoretisch ist es möglich, cgroups in einem CT zu verwenden (auf neueren Kerneln als042stab105.4und durch die Verwendung einer ziemlich neuenvzctl). Grundsätzlich benötigen Sie:

  • Überprüfen Sie Ihre Kernelkonfiguration: Versuchen Sie es lxc-checkconfigmit dem angegebenen Kernel oder verwenden Sie es CONFIG=/boot/config-2.6.32-openvz-042stab108.2-amd64 lxc-checkconfigfür jeden installierten Kernel.

Wenn alles in Ordnung zu sein scheint, können Sie fortfahren und:

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

Und mounten Sie benutzerdefinierte Cgroups im 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

Es ist tatsächlich eine lustige Konstruktion, aber OVZ-Steuerelemente und Cgroups sind nicht grundsätzlich inkompatibel (viele Cgroup-Funktionen sind leere Stub-Funktionen, die d. h. nichts tun, aber keine Fehlermeldungen ausgeben).

Haftungsausschluss: Ich habe es noch nicht ausprobiert (mein Kernel hat keinen Cgroup-Namespace).

Ein weiterer nützlicher Link istdieser Docker Issue Tracker-KommentarInformationen zum Kompilieren Ihres OVZ-Kernels mit den erforderlichen Funktionen.

verwandte Informationen