Technischer Unterschied: LXC vs Docker

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Technischer Unterschied: LXC vs Docker

Beitrag von schorsch_76 » 19.04.2022 10:02:51

Mal ne blöde Frage: LXC und Docker. Beide setzen auf den cgroups und namespaces auf um die Prozesse zu trennen. Docker kann images vom Dockerhub runterladen. LXC kann das ja auch (aber halt "nackte" Images).

Was ist der wichtigste Unterschied zwischen Docker und LXC? Was macht Docker komplett anderst als LXC?

[1] https://de.wikipedia.org/wiki/Docker_(Software)
[2] https://de.wikipedia.org/wiki/LXC

Benutzeravatar
WinMaik
Beiträge: 330
Registriert: 22.03.2008 10:38:00

Re: Technischer Unterschied: LXC vs Docker

Beitrag von WinMaik » 19.04.2022 16:11:55

Vorab:
Da sich meine Erfahrungen mit Docker bisher eher in Grenzen halten, fühle ich mich kaum in der Position hierauf qualifiziert antworten zu können, aber ich will es trotzdem mal versuchen. Für jegliche Korrekturen und Kritik bin ich dankbar!

Wenn mehrere LXC-Container laufen, teilen diese sich bloß den Kernel des Hosts, nicht aber das Betriebssystem, die Bibliotheken oder was sonst noch so gebraucht wird.
Beispiel:
Wenn x Webseiten in jeweils einem LXC-Container gehostet werden sollen, müssen also das Betriebssystem, die nötigen Bibliotheken und natürlich der Webserver x mal installiert sein. Klingt (zumindest aus Speichersicht) schon wenig effizient, wie ich finde.
Mit Docker kann man solch einen Fall effizienter angehen, da sich Docker-Container nicht nur den Kernel teilen, sondern darüber hinaus mittels Overlay-Dateisystemen auch weitere Ressourcen wie Bibliotheken oder auch die Anwendungsdaten teilen können. In diesem Fall könnten sich z. B. alle Container zusätzlich zum Kernel auch das OS, die Libs und den Webserver selbst teilen, während das letzte Overlay z. B. bloß das Webroot Verzeichnis individuell belegt. Das spart nicht nur Platz auf dem Festspeicher, sondern ermöglicht auch ein sehr schnelles starten weiterer Container, falls z. B. eine weitere Webseite dazu kommt.
Zudem beinhaltet Docker eine git-ähnliche Versionierung dieser Dateisystem-Schichten, wozu mir kein LXC-äquivalent bekannt ist.

Obwohl LXC als auch Docker am Ende auf cgroups und namespaces basieren, ähneln sie sich meiner Meinung nach kaum und somit fällt auch ein Vergleich schwer.

Je nach Anwendungsfall kann mal das eine, mal das andere die bessere Option sein.

Persönlich verwende ich Docker zum schnellen Bereitstellen von Testumgebungen während der Entwicklung. Natürlich könnte ich mir auch jedes Mal einen LXC-Container automatisiert erstellen lassen, aber mit Docker ist dieser Prozess nicht nur schneller, sondern auch einfacher abgedeckt.
Die meisten meiner Serverdienste stecken dagegen in LXC Containern, u. a. da ich hier das Gefühl habe, schneller agieren zu können, was Änderungen angeht. Das ließe sich auch alles mit Docker abbilden, aber in meinem Fall schätze ich dies aufwendiger ein als mit dem LXC-Setup. Wenn man dagegen aber im großen Maßstab agiert, sehe ich die Vorteile wieder bei Docker.

Ich hoffe hiermit ich noch mehr Verwirrung zu stiften und bin gespannt, wie andere das sehen.

Benutzeravatar
schorsch_76
Beiträge: 2543
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Technischer Unterschied: LXC vs Docker

Beitrag von schorsch_76 » 19.04.2022 19:03:49

Danke WinMaik!

Ich habe gelesen dass Docker aufs einsetzt um die Filesystem Layer zu machen und das Docker eigentlich nur je Container nur ein Prozess ist. Sowas wie Busybox + meine Anwendung?
LXC macht im Container eine eigene Distribution (so setze ich es auch ein).

Antworten