Ich möchte Journald innerhalb eines Containers ohne systemd verwenden. Ist das möglich? Wenn ja, wie geht das? Um welche Probleme muss man sich kümmern?
Ich möchte Journald innerhalb eines Containers ohne systemd verwenden. Ist das möglich? Wenn ja, wie geht das? Um welche Probleme muss man sich kümmern?
Journald ist eine untrennbare Komponente des Systemd-Bundles. Von systemd für Administratoren, XVII :
Wenn Sie sich fragen, was das Journal ist, finden Sie hier eine kurze Erklärung, um sich auf dem Laufenden zu halten: Das Journal ist eine Komponente von systemd , die Syslog-Meldungen, Kernel-Log-Meldungen, anfängliche RAM-Datenträger- und frühe Boot-Meldungen erfasst sowie Nachrichten, die an STDOUT / STDERR aller Dienste geschrieben wurden, indizieren diese und stellen sie dem Benutzer zur Verfügung. Es kann parallel oder anstelle eines herkömmlichen Syslog-Daemons wie rsyslog oder syslog-ng verwendet werden.
Wie systemd mit Containern umgeht, wird in The New Control Group Interfaces beschrieben , z
systemd implementiert durch sein "unit" -Konzept bereits ein Abhängigkeitsnetzwerk zwischen Objekten, in dem die Weitergabe stattfinden kann, und enthält eine leistungsstarke Ausführungswarteschlange. Ein Großteil der Objekte, für die Ressourcen gesteuert werden müssen, sind bereits systemd-Objekte, wobei die Dienste, die systemd verwaltet, am wichtigsten sind.
Warum wird dies nicht von einer systemunabhängigen Komponente verwaltet?
Nun, wie oben erwähnt, ist ein Abhängigkeitsnetzwerk zwischen Objekten, das zur Weitergabe verwendet werden kann, kombiniert mit einer leistungsstarken Ausführungsmaschine im Grunde das, was systemd ist. Da die cgroups-Verwaltung genau dies erfordert, ist es naheliegend, dies einfach in systemd selbst zu implementieren.
Das Implementieren eines ähnlichen Propagierungs- / Abhängigkeitsnetzwerks mit einem Ausführungsplaner außerhalb von systemd in einem unabhängigen "cgroup" -Dämon würde im Grunde bedeuten, systemd ein zweites Mal neu zu implementieren. Außerdem würde der Zugriff auf einen solchen externen Dienst von PID 1 zum Verwalten anderer Dienste zu zyklischen Abhängigkeiten zwischen PID 1 führen, die diese Funktionalität zum Verwalten des cgroup-Dienstes benötigen, der jedoch erst verfügbar wäre, nachdem dieser Dienst den Start beendet hat. Solche zyklischen Abhängigkeiten können sicherlich umgangen werden, machen aber einen solchen Entwurf komplex.
Diese Art von Struktur wurde als gegen die UNIX-Philosophie gerichtet kritisiert :
"Systemd steht im Widerspruch zur Unix-Philosophie:" Mach eins und mach es gut ", was eine komplexe Sammlung von Dutzenden eng gekoppelter Binärdateien1 darstellt. Seine Zuständigkeiten übertreffen die eines Init-Systems in Bezug auf die Energieverwaltung bei weitem , Geräteverwaltung, Bereitstellungspunkte, Cron, Festplattenverschlüsselung, Socket-API / Inetd, Syslog, Netzwerkkonfiguration, Anmelde- / Sitzungsverwaltung, Readahead, GPT-Partitionserkennung, Containerregistrierung, Verwaltung von Hostnamen / Gebietsschema / Zeit und andere Dinge , blöd."