Container aus Containern heraus erzeugen

Verschachtelt

In der heutigen Softwarewelt laufen viele Prozesse bereits innerhalb von Containern ab. Was liegt also näher, als auch das Erzeugen neuer Container-Images innerhalb einer Container-Instanz durchzuführen? Allerdings ist dies leichter gesagt als getan. In diesem Open-Source-Tipp schauen wir uns mögliche Probleme an und zeigen, wie Sie diese umschiffen.
Das Bereitstellen von Anwendungen ist eine zentrale Administrationsaufgabe und Fehler hierbei fallen Mitarbeitern wie Kunden unmittelbar auf. Eine wichtige ... (mehr)

Neue Container-Images erzeugen Sie beispielsweise mithilfe von docker build und einem Dockerfile. Das Kommando erfordert allerdings sowohl root-Rechte als auch einen aktiven Docker-Daemon. Nun könnten Sie natürlich als Workaround einfach Benutzer in die Gruppe "docker" aufnehmen, um somit einen Build-Vorgang auch für nicht privilegierte Benutzer zu ermöglichen:

ls -l /var/run/docker.sock
srw-rw----. 1 root docker 0 Aug 26 15:16 /var/run/docker.sock
 
usermod -G docker foobar

Wenn Sie dann noch den Socket des Docker-Daemons innerhalb eines Containers zur Verfügung stellen, klappt das Bauen neuer Images auch aus einem Container heraus. Schauen wir uns im Netz diverse Anleitungen an, wie sich neue Images in einer CI/CD-Infrastruktur direkt innerhalb von Containern erzeugen lassen, wird diese Methode sogar oftmals empfohlen. Was gerne dabei vergessen wird, ist jedoch, dass hiermit jeder Benutzer leicht root-Zugriff auf dem Host erhalten kann mit folgendem Kommando:

docker run -ti --privileged -v /:/host <image> chroot /host

In diesem Fall wäre es also besser, den Benutzern, die Zugriff auf den Docker-Daemon erhalten sollen, die hierfür notwendigen sudo-Rechte zu geben. Dies hätte auch den Vorteil, dass sämtliche Zugriffe auf den Docker-Service korrekt mitgeloggt werden und sich somit verifizieren lässt, wer wann welche Aktion ausgeführt hat.

Images mit buildah erzeugen

Mittlerweile beherrscht nicht mehr nur Docker die Container-Welt, sondern es existieren auch viele andere Container-Runtimes mit ihren jeweiligen Tools. Buildah [1] ist ein solches Tool, das aus dem CRI-O/Podman/skopeo-Ökosystem stammt und, im Gegensatz zu Docker, keinen Container-Daemon für das Erzeugen von neuen Container-Prozessen oder -Images benötigt. Das Tool haben wir

...

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

comments powered by Disqus
Mehr zum Thema

Container-Images mit buildah

Um einen Container zu starten, muss zuerst das gewünschte Image zur Verfügung stehen. Dieses kommt entweder aus einem Image-Repository oder man baut es selbstständig zusammen. Der Open-Source-Tipp in diesem Monat schaut sich an, wie ein Container-Image unabhängig von der Docker-Engine erzeugt werden kann.

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

Ausgabe /2023