Mit Docker Desktop steht seit einiger Zeit eine Entwicklungsumgebung für Container auf Windows- und Mac-Rechnern zur Verfügung. Aber wie sieht es eigentlich aus, wenn Sie auf diesen Systemen statt Docker lieber den Container-Manager Podman einsetzen möchten oder eine ältere Maschine verwenden, dievon Docker Desktop nicht unterstützt wird? Unser Open-Source-Tipp liefert Antworten.
Wer ein Linux-System einsetzt, hat keine großen
Schwierigkeiten, entweder Docker oder Podman als Container-Manager zu verwenden.
Die Software wird von nahezu allen bekannten Linux-Distributionen über die
eigenen Repositories verteilt. Anders sieht es hingegen aus, wollen Sie auf
einem Windows- oder Mac-System eine Umgebung zur Entwicklung von
Container-Anwendungen aufbauen. Hierzu müssen Sie auf externe Software
zurückgreifen. Docker Desktop [1] beispielsweise stellt für solche Systeme eine
Docker-Umgebung zur Verfügung die neben der eigentlichen Docker-Engine und dem
Kommandozeilen-Client auch noch weitere Komponenten enthält. So bekommen Sie mit
der Software beispielsweise auch das Container-Orchestrierungstool Kubernetes
[2] frei Haus geliefert.
Ältere Systeme ausgesperrt
Problematisch wird es allerdings, wenn Sie einen älteren
Windows- oder Mac-Rechner besitzen. Docker Desktop erfordert mindestens Windows
10 oder macOS 10.14. Allerdings können Sie in diesem Fall immerhin noch auf
Docker Machine [3] zurückgreifen. Hiermit erzeugen Sie auf dem lokalen Host ein
virtuelles Linux-System, worüber Sie dann Zugriff auf die Docker-Engine
erhalten. Das Beispiel in Bild 1 verwendet Virtualbox [4] auf einem Mac für das
Setup der virtuellen Maschine. Virtualbox können Sie entweder als
Installationsarchiv direkt von der Webseite herunterladen oder aber auch, falls
die Installation auf einem Mac-System erfolgen soll, direkt mit Hilfe des
Paketmanager Homebrew [5] installieren.
Bild 1: Mithilfe von docker-machine erzeugen Sie eine virtuelle Maschine, die dann die Docker-Engine zur Verfügung stellt.
Mit Docker Machine erhalten Sie also unabhängig von Docker
Desktop ebenfalls Zugriff auf den Docker-Container-Manager und können somit
ebenfalls Container-Anwendungen entwickeln. Aber wie sieht es eigentlich aus,
wenn statt Docker lieber Podman als Container Manager zum Einsatz kommen soll?
Wer ein Linux-System einsetzt, hat keine großen
Schwierigkeiten, entweder Docker oder Podman als Container-Manager zu verwenden.
Die Software wird von nahezu allen bekannten Linux-Distributionen über die
eigenen Repositories verteilt. Anders sieht es hingegen aus, wollen Sie auf
einem Windows- oder Mac-System eine Umgebung zur Entwicklung von
Container-Anwendungen aufbauen. Hierzu müssen Sie auf externe Software
zurückgreifen. Docker Desktop [1] beispielsweise stellt für solche Systeme eine
Docker-Umgebung zur Verfügung die neben der eigentlichen Docker-Engine und dem
Kommandozeilen-Client auch noch weitere Komponenten enthält. So bekommen Sie mit
der Software beispielsweise auch das Container-Orchestrierungstool Kubernetes
[2] frei Haus geliefert.
Ältere Systeme ausgesperrt
Problematisch wird es allerdings, wenn Sie einen älteren
Windows- oder Mac-Rechner besitzen. Docker Desktop erfordert mindestens Windows
10 oder macOS 10.14. Allerdings können Sie in diesem Fall immerhin noch auf
Docker Machine [3] zurückgreifen. Hiermit erzeugen Sie auf dem lokalen Host ein
virtuelles Linux-System, worüber Sie dann Zugriff auf die Docker-Engine
erhalten. Das Beispiel in Bild 1 verwendet Virtualbox [4] auf einem Mac für das
Setup der virtuellen Maschine. Virtualbox können Sie entweder als
Installationsarchiv direkt von der Webseite herunterladen oder aber auch, falls
die Installation auf einem Mac-System erfolgen soll, direkt mit Hilfe des
Paketmanager Homebrew [5] installieren.
Bild 1: Mithilfe von docker-machine erzeugen Sie eine virtuelle Maschine, die dann die Docker-Engine zur Verfügung stellt.
Mit Docker Machine erhalten Sie also unabhängig von Docker
Desktop ebenfalls Zugriff auf den Docker-Container-Manager und können somit
ebenfalls Container-Anwendungen entwickeln. Aber wie sieht es eigentlich aus,
wenn statt Docker lieber Podman als Container Manager zum Einsatz kommen soll?
Podman statt Docker
Es liegt nahe, dass für Docker Machine das passende Gegenstück
auch für Podman existiert. Tatsächlich hat die Entwicklung einer solchen
Software begonnen [6], allerdings wurde das Projekt nach einiger Zeit zu Gunsten
von Vagrant [7] eingestellt. Vagrant genießt seit langer Zeit einen guten Ruf
als Manager für virtuelle Maschinen und kommt gerne zum Einsatz, um auf Basis
von sogenannten Vagrant Boxen und einem Vagrantfile virtuelle Maschinen zu
erzeugen. Der hierfür notwendige Workflow lässt sich komplett automatisieren und
skaliert auch beim Einsatz einer Vielzahl an virtuellen Maschinen sehr gut.
Im Listing-Kasten finden Sie ein beispielhaftes Vagrantfile,
mit dessen Hilfe Sie eine virtuelle Maschine wieder auf Basis von Virtualbox mit
einem Fedora Betriebssystem erzeugen. Innerhalb dieses Systems installieren Sie
die Podman-Software und sorgen dafür, dass diese auf einem Unix-Socket auf
eingehende Anfragen wartet. Auf dem Windows- oder Mac-System installieren Sie
dann nur noch die Podman-Client-Software, die über den Unix-Socket mit "podman"
innerhalb der virtuellen Maschine kommuniziert. Das komplette Setup der
virtuellen Maschine nehmen Sie dabei über das Vagrantfile vor.
Nachdem Sie nun also sowohl Virtualbox als auch Vagrant, entweder mit Hilfe von
Homebrew oder eines Installationsarchivs, installiert haben, speichern Sie das
Vagrantfile aus Listing 1 unter dem gleichen Namen in einem Order ab –
beispielsweise "~/podman/". Wichtig dabei ist, dass die Datei wirklich
Vagrantfile heisst, da Vagrant diese ansonsten nicht ohne weiteres findet. Aus
dem Verzeichnis heraus, in dem sich die Datei befindet, rufen Sie dann einfach
vagrant up auf, um die Installation und das Setup der virtuellen Maschine zu
starten.
Hat soweit alles geklappt, zeigt der Aufruf von vagrant box list nun auch an,
dass eine Fedora-33-Vagrant-Box auf Ihrem System vorhanden ist. Vagrant legt
diese übrigens im Heimatverzeichnis eines Benutzers unterhalb des Pfads
"~/.vagrant.d/boxes/" ab:
vagrant box list
fedora/33-cloud-base (virtualbox, 33.20201019.0)
Mittels vagrant ssh erhalten Sie auch direkten Shell-Zugriff auf die VM.
Podman-Client
auf dem Host-System
Damit Sie nun vom Host-System aus Ihre Container verwalten können, benötigen Sie
natürlich noch den Podman-Client. Laden Sie hierfür einfach die entsprechende
Installationsdatei von der Webseite [8] oder, im Fall von macOS, installieren
Sie die Software über den Aufruf von brew install podman, erneut über den
Homebrew-Paketmanager.
Podman kennt einige Umgebungsvariablen, damit die Client-Software weiß, auf
welchem Host der Podman-Domain-Socket zur Verfügung steht und wie die
Authentifzierung stattfinden soll. Tragen Sie hierfür einfach die folgenden
beiden Zeilen in Ihre Shell-Konfigurationsdatei ein – also beispielsweise die
"~/.bashrc" oder "~/.zshrc", falls Sie auf einem Mac-System arbeiten. Setzen Sie
stattdessen den Podman-Windows-Client ein, so können Sie die notwendigen Daten
einfach direkt dort eintragen:
Achten Sie drauf, die korrekten Pfade zu verwenden. Unser Beispiel stammt aus
der Datei "~/.zshrc" vom Mac des Autors.
Bild 2 schließlich zeigt, wie Sie nun mit Hilfe von podman Ihre Container
verwalten können, indem Sie mit dem Client auf die Podman-Installation innerhalb
der virtuellen Maschine zurückgreifen.
Bild 2: Über den podman Client können Sie Ihre Container nun wie gewohnt verwalten.
Fazit
Über den Umweg einer virtuellen Maschine können Sie den Container-Manager Podman
auch ganz bequem auf
einem Windows- oder Mac-System einsetzen. Wer stattdessen lieber mit Docker
arbeiten möchte, der nutzt entweder Docker Machine für das Setup einer
virtuellen Maschine oder installiert Docker Desktop. Die Software wird
allerdings nicht auf älteren Windows- oder Mac-Systemen unterstützt.