Portable Services mit Systemd

Zum Mitnehmen

Container mal ganz ohne Container Manager betreiben, geht das überhaupt? Es kommt drauf an, was man unter dem Begriff Container tatsächlich versteht. Eine genaue Definition hierfür existiert nämlich nicht. Die aktuelle Systemd-Version 239 führt nun das Konzept von Portable Services ein. Was hinter diesem Begriff steckt und was das alles mit Containern zu tun hat, darum geht es in diesem Open-Source-Tipp.
Um sich als Admin einen besseren Überblick zu verschaffen, wie es um Komponenten und Dienste in der IT-Landschaft bestellt ist, müssen passende ... (mehr)

Geht es um Container, ist damit meistens gemeint, dass Anwendungen isoliert vom Host-System ausgeführt werden. Nicht von ungefähr kommt der Vergleich mit dem altbekannten Unix-Chroot-Mechanismus. So bringen Container-Anwendungen üblicherweise ein eigenständiges Dateisystem in Form eines Container-Images mit, in dem sich die Anwendung inklusive der Runtime und allen Abhängigkeiten befindet. Über Namespaces wird die Anwendung dann vom Rest des Host-Systems isoliert. Dies gilt nicht nur für das Dateisystem, sondern beispielsweise auch für die Container-Prozesse, das Netzwerk und auch Benutzer, die sich zwischen Host und Container voneinander isolieren lassen.

Zum Verwalten der Ressourcen, die ein solcher Container in Anspruch nehmen darf, kommen Control Groups (CGroups) zum Einsatz. Diese sind bereits seit Ende 2007 Bestandteil des Linux-Kernels. Schaut man sich all diese Beschreibungen von Containern einmal genauer an, wird man feststellen, dass der System- und Servicemanager systemd diesen Anforderungen durchaus gerecht wird. Die von systemd eingesetzten Unit-Dateien zur Konfiguration eines Services erlauben eine Vielzahl unterschiedlicher Optionen, die das Verhalten eines Services bestimmen, sodass sich deren Eigenschaften mit denen eines Containers vergleichen lassen. Im Folgenden beschreiben wir einige dieser Optionen näher, um den Weg zum Konzept der Portable Services zu ebnen.

Systemd unterstützt bereits seit den Anfangstagen die Option "RootDirectory=". Hiermit setzt der Service-Manager das Root-Directory für die Prozesse eines Services und greift hierfür auf den Linux-Systemcall "chroot()" zurück. Etwas neuer, aber von der Funktionsweise ähnlich, ist die Option "RootImage=", mit deren Hilfe das Dateisystem für die Prozesse eines Services aus einer Image-Datei eingelesen wird. In der Container-Welt können bei Bedarf Dateisysteme des Hosts in den Container eingebunden werden, wenn dies gewünscht ist.

...

Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2019