Benutzer-Werkzeuge

Webseiten-Werkzeuge


container
  • sind keine virtuellen Maschinen
    • bei denen ein kompletter Computer simuliert wird
  • Systemcontainer besitzen einen eigenen Kernel und sind virtuellen Maschinen noch am ähnlichsten
    • es wird keine Hardware simuliert, der Kernel im Container weiß das er in einem Container läuft
    • es werden entsprechende Schnittstellen zwischen beiden Kerneln benutzt um Resourcen des Hosts einzublenden
    • Vorteil: Man verbraucht weniger CPU und RAM, da die ganze Simulation von Hardware wegfällt
  • Applicationcontainer enthalten nur eine oder mehrere zusammengehörige Andwendungen/Bibliotheken
    • sie laufen wie jede andere Andwenund auf dem System
    • allerdings wird beschränkt was sie vom System sehen können (andere Prozesse, Geräte) und wie viel Resourcen sie in Anspruch nehmen könenn (RAM, CPU-Zeit usw.)
      • entsprechende Techniken sind Teil des Linux-Kernels cgroups (Beschränkung des Resourcen-Verbrauchs), Namespaces (Sichtbarkeit von Geräten, Prozessen), chroot (Einschränkung des sichtbaren Dateisystembereichs, ein anderes Verzeichnis wird für den Prozess das root-verzeichnis), AppAmore/Selinux weitere Beschränkungen

Weitere Begriffe

Begriff Beschreibung
LXCLinux Container

Container-System wie Docker und entsprechende Tool-Sammlung.
Kompatibel zu OCI-Containern.
Es gibt 2 „Implementierungen“ lxc-libvirt und lxc, das eine benutzt libvirt, das andere nicht ;)
LXDDas gleiche wie LXC nur für Systemcontainer
DockerEbenfalls ein Container-System.

Es bietet allerdings ein größeres Öko-System als lxc, wie zum Beispiel die Registry und Orchestrierung.
OCI-Kompatibel
OCIOpen Container Initiative

Format-Definition von Containern, sowohl Docker, als auch lxc können Container in diesem Format ausführen
ImageAbbild eines Containers + die Instruktionen die notwendig sind um ihn aufzubauen.
Aus einem Image (sozusagen der Vorlage) kann man beliebig viele Container erstellen.
Images können auseinander abgeleitet werden - man kann sich ein Image nehmen und dieses um weitere Services erweitern und es als neues Image abspeichern. Die einzelnen Schritte werden als Layer bezeichnet
LayerSchichten von Dateisystemen (u.a. kann BTRFS genutzt werden → da wird das per Snapshots realisiert) die übereinander gelegt werden.
Ermöglicht es aus bestehenden Containern immer weiter neue Container zu generieren, wo zum Beispiel weitere Dienste installiert sind oder andere Konfigurationen vorhanden sind.
Die unterste Schicht ist dann sozusagen das Original-Image, die darüber enthält die Änderungen die am Original-Image gemacht wurden um das neue Image zu erstellen. Würde man dann noch mal Änderungen machen erhält man wieder einen neuen Layer.
Der letzte Layer ist jeweils beschreibbar.
ContainerDie eigentliche ausführbare Instanz.

Enthält entweder ein abgespecktes Betriebssystem (Systemcontainer) oder nur ein oder mehrere Anwendungen/Dienste inkl. ihrer Abhängigkeiten (Bibliotheken usw).
RegistryEin Dienst der zentral Images zur Verfügung stellt.

Docker hat einen zentralen, öffentlichen Dienst dafür, man kann sich aber (bei Docker, bei anderen wahrscheinlich auch) auch private Registries aufsetzen
OrchestrierungVerwaltung von Containern über Systemgrenzen hinweg
container.txt · Zuletzt geändert: 2021/08/22 14:52 von root