ADMIN

2021

07

2021-07-01T12:00:00

Container- und Applikationsmanagement

PRAXIS

056

Open-Source-Tipp

Containermanagement

Docker

Docker Desktop

Für Jung und Alt

von Thorsten Scherf

Veröffentlicht in Ausgabe 07/2021 - PRAXIS

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.
Listing: Vagrantfile
Vagrant.configure("2") do |config| config.vm.box = "fedora/33-cloud-base"       config.vm.provider "virtualbox" do |vb| vb.memory = "1024"       end       config.vm.provision "shell", inline:            yum install -y podman             groupadd -f -r podman             #systemctl edit podman.socket             mkdir -p /etc/systemd/system/podman.socket.d             cat >/etc/systemd/system/podman.socket.d/override.conf [Socket] SocketMode=0660 SocketUser=root SocketGroup=podman EOF            systemctl daemon-reload             echo "d /run/podman 0770 root podman" > /etc/tmpfiles.d/podman.conf             sudo systemd-tmpfiles --create             systemctl enable podman.socket             systemctl start podman.socket             usermod -aG podman $SUDO_USER       SHELL end
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:
export CONTAINER_HOST=ssh://vagrant@127.0.0.1:2222/run/podman/podman.sock
export CONTAINER_SSHKEY=/Users/ tscherf/tools/podman/.vagrant/machines/default/virtualbox/private_key
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.
(dr)
Link-Codes