Container und Services
Hier eine kurze Einführung in Container und Systemd Services.
Systemd Services
Eine systemd Instanz verwaltet (unter anderem) mehrere Services. Diese bestehen aus einem einzelnen
Prozess, einer einzelnen Komponente.
Der Webserver unserer Fachschaftswebsite ist ein Service, die dazugehörige Datenbank ein weiterer.
Die Services sind nicht sonderlich isoliert voneinander, sie reden z.B. mit dem selben Netzwerk
Interface und teilen sich ein Dateisystem.
Container
Container hingegen sind stärker voneinander isoliert, sie sind quasi ein eigenes System. Sie haben ein eigenes Dateisystem und ein eigens Netzwerk Interface. Unter anderem haben sie auch eine eigene Systemd Instanz.
Sie fassen quasi Komponenten zusammen. Um wieder die Fachschaftswebsite als Beispiel zu nehmen:
Es gibt einen Container fscshhude
der diese als ganzes repräsentiert. Innerhalb dessen läuft der
Webserver und die Datenbank, von außen gesehen interessiert uns das aber nicht. Wir können es von
außen auch nicht (ohne weiteres) feststellen, den das “äußere” systemd weiß nicht was das “innere”
systemd tut.
Netzwerk
Jedem Container wird automatisch eine eigene IP zugeordnet, außerhalb ist diese 192.18.<id>.11
und innerhalb 192.168.<id>.10
.
Dateisystem
Unsere Container sind “ephemeral”, das heißt das das Dateisystem nicht über Container Neustarts
persistent ist. Natürlich brauchen sie trotzdem persistente Daten, wir möchten aber entscheiden
können welche das sind. Auf dem Host hat jeder Container seinen eigenen Ordner unter /persist
wo
diese Daten liegen. Damit diese im Container zu sehen sind werden sie in den Container gemountet,
z.B. /persist/vaultwarden/data
nach /var/lib/vaultwarden