Zwei Container-Formate auf Proxmox im Vergleich. Seit der Version 9.1 kann auf Proxmox ein Docker/OCI Container direkt ausgeführt werden. Also ohne virtuelle Maschine und ohne Docker Engine.
LXC Container kann Proxmox schon lange, aber was die OCI? OCI ist eine Initiative, die von Docker und anderen Branchenführern gegründet wurde, um allgemeingültige Standards für Container zu schaffen. OCI ist dabei keine Alternative zu Docker, sondern
– sie definieren das Format, in dem ein Container-Image aufgebaut ist (Dateisystem, Metadaten)
– sie definieren, wie ein Container ausgeführt wird (Lebenszyklus, Dateisystem-Bundle)
– sie standardisieren, wie Container-Images zwischen Repositories (z.B. Docker Hub) ausgetauscht werden
Und diese OCI Definitionen nutzt Proxmox für zum Beispiel Docker Container. Es sind also Docker Container, die über OCI Funktionen genutzt werden. Für die Praxis können wir wohl einfach sagen, es laufen Docker Container direkt auf Proxmox, zwar nicht so ganz richtig, aber es drückt die Funktion aus.
Wie unterscheiden sich denn jetzt Docker und LXC Container? Dazu haben wir zwei Videos erstellt, in dem wir WordPress einmal mit Docker und zum anderen mit LXC aufbauen. Und zwar mit möglichst wenig eigenen Änderungen oder Anpassungen. Es sind zwei grundsätzlich unterschiedliche Lösungen entstanden, aber mit sehr ähnlicher Funktion.
Docker / OCI auf Proxmox – Teil 1
LXC Container auf Proxmox – Teil 2
Fazit aus den beiden Videos
Beide Container lassen sich sehr schnell installieren, sie laufen ohne große Änderungen oder Anpassungen. Aber die Ergebnisse sind sehr unterschiedlich.
Fangen wir mit dem LXC Container an: Es ist alles in einem Container vorhanden, alle Applikationen sind fertig installiert und auch aufeinander abgestimmt. Für alles gibt es eine Weboberfläche, ich brauche quasi die Commandline nicht. Also gut für alle, die sich wenig mit Linux auskennen. Aber da haben wir das Problem, wie sicher ist dieser Container. Man ist zu 99% von dem Maintainer des Containers abhängig. Oder man hat das Know How, dann würde man evtl. diesen Container nicht nutzen und alles selbst bauen.
Beim Docker ist es ähnlich, aber anders. Auch dort muss ich mich auf die Images der Container verlassen, die sind aber weniger komplex, also einfacher zu verwalten. Weiterhin ist bei diesem Konzept jeder Funktion in einem eigenen Container. Ich kann also Webserver mit Datenbank verbinden, aber auch mehrere Webserver mit einer Datenbank. Ich kann mal eben von phpmyadmin auf ein anderes Tool zur Verwaltung der Datenbank schwenken oder auch zwei Tools gemeinsam nutzen. Auch der Wechseln der Datenbank ist möglich, also von mariadb auf mysql oder Oracle.
Aber noch ein großes Problem bei den Docker / OCI Containern besteht, mit der fehlenden Möglichkeit für ein Update, ich kann nur neue Container anlegen. Das kann sich aber noch mit neuen Versionen von Proxmox ändern.
Wichtig ist aber auch das Design dahinter. Ein Docker Container ist noch kleiner als ein LXC. Im LXC haben ich immer eine Shell, kann Befehle ausführen und bin quasi in einer kleinen VM. Im Docker läuft aber eigentlich nur ein Prozess. Wird dieser Prozess beendet, dann beendet sich der Container. Wenn man also z.B. im mariadb Container in der Console ist, dann beendet sich der Container mit Drücken von CNRTL-C.
Die Datenspeicher der Container im Proxmox
Im Proxmox kommt man sehr einfach in das Filesystem eines Containers. Über die CLI des Proxmox Hosts kann einfach in das gemountet Verzeichnis des Containers gewechselt werden. Über den Hosts können also z.B. Dateien kopiert und auch verändert werden. Damit können auch zusätzliche Platten oder Volumes in einen Container integriert werden.
Über diesen Weg kommt man auch in einen nicht laufenden Container. Man kann also die Konfiguration anpassen, ohne das der Container läuft.


