Von Docker zu Buildah – Cheatsheet
Von:
Datum: 28. Mai 2021
Bei der Migration von Docker zu ContainerD ändert sich nicht nur der Name sondern auch die Kommandozeilenaufrufe. Die Docker-Images bleiben kompatibel und können in ContainerD ausgeführt werden.
Von Docker zu Buildah Migration Cheatsheet
Da es sich bei ContainerD „nur“ um eine Laufzeitumgebung handelt, wird noch ein weiteres Tool zum Bau der einzelnen Images benötigt. Eines dieser Werkzeuge ist Buildah. Dieses, wie der Name bereits vermuten lässt, kümmert sich exklusiv darum, neue Images zu bauen und bereit zu stellen. Der Upload dieser Images auf einen Hub wird ebenfalls durch Buildah durchgeführt.
Buildah ist entgegen ContainerD und Docker kein Tool welches dauerhaft eingesetzt wird. Dies ist ein Grund dafür, warum es sich bei Buildah nicht um einen Systemdienst handelt, während es sich be ContainerD um einen eben solchen handelt.
Buildah speichert seine Daten in /var/lib/containers.
Buildah’s Aufgabe besteht darin ein Image zu bauen und dieses zum Download auf einem Hub bereitzustellen. Die Bereitstellung eines neuen Images erfolgt meist durch eine Image Registry, in welche Buildah das gebaute Image hochlädt. Von dort kann es z.B. durch ContainerD heruntergeladen und anschließend gestartet werden.
Dockerfile verwenden
Ein Dockerfile beschreibt den Zusammenbau eines neuen Images. Worauf basiert das Image, welche Software soll installiert werden, und wie wird der Container gestartet. Ein Beispiel für ein solches Dockerfile sieht wie folgt aus:
Ein Container der auf diesem Image basiert, gibt die aktuell laufenden Prozesse aus, und terminiert anschließend.
Ein solches Dockerfile kann sowohl mit Docker, als auch auch mit Buildah gebaut und das Ergebnis in einen Hub hochgeladen werden.
Docker:
Buildah:
Docker Images anzeigen
Zeigt eine Übersicht aller sich auf dem System befindlichen Images an.
Docker:
Buildah:
Laufender Container eines Images anzeigen
Gibt eine Übersicht darüber, welche Container basierend auf welchem Image aktuell laufen.
Docker:
Buildah:
Dockerfile to buildah migration guide
Buildah verfolgt einen anderen Ansatz als Docker, hier werden die Kommandos nicht in ein spezielles Datei Format geschrieben und der Reihenfolge nach ausgeführt.
Daher müssen die einzelnen Kommandos angepasst, und anschließend in ein Kommandozeilen Skript überführt werden.
Basierend auf welcher Grundlage soll das neue Image erzeugt werden.
Docker:
Buildah:
Konfiguration der Environment Variablen für das neue Image.
Docker:
Buildah:
Ausführen eines beliebigen Kommandos im neu zu erstellenden Image.
Docker:
Buildah:
Bereitstellen des neuen Images unter dem Namen ImageFoo. Besonders zu erwähnen ist an dieser Stelle, dass das Docker Kommando auf der Kommandozeile ausgeführt wird, während des Buildah Kommando ein Teil des Build Scripts zur Genierung eines Images ist, welches über die Kommandozeile gestartet wird.