|
|
### Allgemeines:
|
|
|
LXC ist ähnlich wie eine Virtuelle Maschine (nur look and feel). Die Hardware wird nicht virtualisiert. Ein LXC Container Bootet aber viel schneller und benutzt weniger RAM, als eine vergleichbare virtuelle Maschine. Es handelt sich um eine Prozess Kapselung. Man spricht von Betriebssystem Containern. Der Kernel bzw. dessen Features werden vom Hostsystem benutzt.
|
|
|
|
|
|
Docker hat den gleichen Ansatz wie LXC. Ausführen isolierter Prozesse ohne Vollvirtualisierung um Resourcen zu sparen. Viele Features in Docker werden analog wie in LXC benutzt; wie z.B. Kernel Sicherheitsfeatures (cgroups, namespaces, selinux etc). Ebenfalls benutzt Docker die gleiche Container Runtime (runC). Die Hardware wird auch nicht virtualisiert. Auch bei Docker wird der Kernel des Host Systems benutzt. Bei Docker spricht man von Applikation Containern.
|
|
|
|
|
|
### Prozesse:
|
|
|
LXC ist designed um mehrere Prozesse isoliert auszuführen.
|
|
|
Docker führt einen isolierten Prozess aus.
|
|
|
|
|
|
Registry Images und Templates.
|
|
|
Die Docker Community hat ein etabliertes und sehr Umfangreiches Ecosystem, was Images betrifft. Es ist sehr leicht vordefinierte Images aus der Docker Registry zu beziehen, oder eigene Images anderen Benutzern zur Verfügung zu stellen.
|
|
|
Bei LXC ist man mehr auf Eigenbau angewiesen. Die LXC Templates sind recht beschränkt, lassen sich aber leicht mit Hilfe von Bash Scripts (chroot) ausbauen und für den eigenen Bedarf modifizieren.
|
|
|
|
|
|
### Persistenz:
|
|
|
LXC speichert Daten standardmässig im Filesystem (Stateful). Die Daten sind durch das Hostsystem 1:1 verfügbar und können geändert werden.
|
|
|
Docker benutzt das “Copy on write” Prinzip, speichert die Daten der Applikation im Container. Bei löschen des Containers werden die Daten verworfen. Für Persistenz werden Docker Volumes benutzt. Die Handhabung der Deployments und deren Daten in den Volumes entspricht nicht den klassischen Handhabung. Dies muss beim Aufbau, der Migration und dem Betrieb berücksichtigt werden.
|
|
|
|
|
|
### Persöhnliches Fazit:
|
|
|
Docker ist sehr gut geeignet um Testumgebungen aufzubauen, Tests auszuführen um danach den Container zu verwerfen.
|
|
|
LXC eignet sich viel besser für längeren Betrieb, wo vor allem wenn Persistenz eine wichtige Rolle spielt. LXC Container sind besser kompatibel zu bereits bestehenden Systemadministrationswerkzeugen (Scripts, Puppet, etc) und Workflows.
|
|
|
|
|
|
Developer love Docker.
|
|
|
Sysadmins love LXC.
|
|
|
DevOps love both.
|
|
|
|
|
|
Container Betrieb von einem Webhosting Angebot in unserem Use Case (ca. 200 Container) entspricht viel besser dem LXC Ansatz. Betrieb ist einfacher in unsere bestehende DevOps Infrastruktur integrierbar. Es gäbe keine grosse Umstellung, verglichen zu den aktuellen Werkzeugen und Workflows. Die Migration der bereits bestehenden Webdienste wäre einfacher. |