Linux Container & Active Directory - Teil 1

Diese Blogeintrag-Serie erläutert, wie einzelne LXC Container einer Domäne beitreten können. Außerdem wird aufgeführt, wie Nutzerbeschränkungen, Superuser-Rechte und SSH aktiviert und konfiguriert werden kann.

Blogserie:

  1. Übersicht

  2. Einbinden eines Containers in das Active Directory

  3. Rechteverwaltung und Fernzugriff

In dem ersten Teil der Blogserie schauen wir uns die Unterschiede zwischen Windows Container, Hyper-V Container und Linux Container an. Außerdem wird erklärt, weshalb es vorteilhaft ist, einen Linux Container unter Linux auszuführen.

Windows Container

Windows Container (Prozess-Isolation) baut auf Docker auf und nutzt den Kernel des Host-Systems für seine Container. Aufgrund dieser Restriktion ist es nicht möglich, einen Linux Container direkt auf dem Host-System auszuführen. Hierzu ist es notwendig, zuerst eine komplette virtuelle Linux Maschine zu erstellen und anschließend Linux Container in dieser auszuführen. Dadurch muss hier mit den Leistungseinbußen einer normalen virtuellen Maschine gerechnet werden.

Hyper-V Container

Auch Microsofts eigene Virtualisierungstechnik Hyper-V stellt seit Windows Server 2016 Hyper-V Container (Hyper-V Isolation) bereit. Hier wird Docker genutzt, um den Container zu verwalten. Verglichen mit Windows Container wird bei Hyper-V Container nicht der Kernel des Host-Systems, sondern ein eigener Kernel je Container genutzt. Da hier der Linux-Kernel im Container genutzt wird, müssen Linux-Kernel Befehle des Containers in Windows-Kernel Befehle umgewandelt werden. Um dies zu erreichen, wird auch hier eine komplette virtuelle Linux Maschine erstellt, in welcher die Linux Container ausgeführt werden. Wiederum bringt dies die gewohnten Leistungseinbußen mit sich.

Linux Container unter Linux

Um möglichst wenig Leistung aufgrund der Virtualisierung eines Linux Betriebssystem zu verlieren, wird empfohlen Linux Container auf einem Linux Host-System auszuführen. Zur Container-Verwaltung gibt es zwei weit verbreitete Systeme. Zum einen bietet sich hier Docker und zum anderen LXC an. Im weiteren Verlauf dieser Blogserie wird LXC als Container-Verwaltung genutzt, da Docker Container noch minimalistischer sind als LXC. Folglich muss mehr Aufwand betrieben werden, um den Container ins AD aufzunehmen. Des Weiteren löst sich eine solch tiefgründige Modifikation des Docker Containers von dem Anwendungscontainer-Prinzip.

LXC

LXC steht für Linux Containers und ist eine Virtualisierungstechnik, die mehrere voneinander isolierte Linux-Systeme auf einem Host-System ausführen kann. In seiner Betriebsweise ist LXC vergleichbar mit Linux-vServer, da bei beiden Virtualisierungsverfahren der Linux-Kernel des Host-Systems genutzt wird. Das Nutzen des gleichen Kernels bietet einen geringeren Overhead im Vergleich zur konventionellen Hardware-Virtualisierung. Durch diese Eigenschaft werden LXC und andere Container-Virtualisierungstechniken, wie Docker, für kleinere und spezifische Anwendungen der Hardware-Virtualisierung vorgezogen.
LXC Container lassen sich ganz leicht anhand eines Befehls ($lxc launch <Distribution>:<Version> <ContainerName>) erstellen und gleichzeitig starten. Hierbei gibt der Nutzer an, welche Version seiner gewünschten Linux-Distribution (ubuntu, alpine, …) genutzt werden soll und benennt den neuerstellten Container wie gewünscht. Folglich lädt LXC das benötigte Image und die benötigten Konfigurationsdateien herunter und erstellt den Container.
Um anschließend auf die Shell des Containers zugreifen zu können, kann $lxc exec <ContainerName> -- /bin/<ShellName> genutzt werden. LXC führt dann den angegebenen Befehl im Container aus und startet die angegebene Shell (bash, zsh, …), sofern diese im Container vorliegt.