Podman Teil 2 – Starten vorhandener Images

In diesem zweiten Teil des Blogs wirst du lernen, wie du vorhandene Images aus zentralen Registries starten kann. Im konkreten Fall werden wir eine Instanz von MSSQL Express Datenbank, mit Hilfe von Podman als Container ausführen.

Images von Docker-Hub

Wenn man auf der Suche nach vorhandenen Images ist, sollte als erste Anlaufstelle immer Docker-Hub (https://hub.docker.com/) dienen.

Wir suchen nach microsoft mssql und werden letztendlich zur entsprechenden Seite des Images weitergeleitet (https://hub.docker.com/r/microsoft/mssql-server)

Auf der Docker Hub-Seite findest du in der Regel umfassende Informationen zu den verfügbaren Konfigurationen für das jeweilige Image. Die meisten Einstellungen werden beim Start des Containers über Umgebungsvariablen vorgenommen, was eine flexible Anpassung der Container-Umgebung ermöglicht.

Auf Docker Hub findest du die entsprechenden Befehle der Docker-CLI. Da die Podman-CLI jedoch nahezu identisch ist, können die Befehle in der Regel einfach übernommen werden, indem du „docker“ durch „podman“ ersetzt.

Starten des MSSQL Express Containers

Das MSSQL-Image (microsoft/mssql-server) kann sowohl in der Professional- als auch in der Express-Version verwendet werden. In diesem Tutorial werden wir uns auf die Express-Version konzentrieren.

In der Dokumentation sehen wir, dass wir eine MSSQL-Express Container mit folgendem Befehl starten können:

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=yourStrong(!)Password" -e "MSSQL_PID=Express" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
Code-Sprache: JavaScript (javascript)

Wir nehmen das Command und passen es für unsere Bedürfnisse unter Verwendung von Podman an:

podman run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=UseAReallyStrongPassword!!!" -e "MSSQL_PID=Express" -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
Code-Sprache: JavaScript (javascript)

Über den „-e“ Switch können die bereits erwähnten Umgebungsvariablen in Form von Key-Value Paaren angegeben werden. Beispielsweise wird über die Umgebungsvariable „MSSQL_PID“ mit dem Wert „Express“ dem Container mitgeteilt, dass die Express-Version hochgefahren werden soll.

Für uns ist dann noch das zu setzenden Kennwort für den SA-Admin wichtig. Dieses wird über die Umgebungsvariable „MSSQL_SA_PASSWORD“ gesetzt. Achtung: Dieses muss komplex genug sein (Groß- und Kleinbuchstaben, Sonderzeichen, …), damit der Container ordnungsgemäß hochfährt.

Standardmäßig verwendet MSSQL den Port 1433. Dieser ist grundsätzlich nur innerhalb des Containers erreichbar. Damit du die Datenbank von außen erreichen kannst, musst du definieren auf welchen Windowsport du diesen mappen möchtest. Das geschieht über den Switch „-p“. Im konkreten Fall mappen wir den Port einfach auf den selben Port unter Windows (1433).

Nach ausführen des Podman-Commands sollte das Image aus der Registry gepullt und als Container ausgeführt werden.

Über den folgenden Befehl kann der Status aller laufenden Container angezeigt werden:

podman ps -a

Unter „STATUS“ sollte hier „UP…“ zu sehen sein.

Verbinden mit der Datenbank

Wir können nun über einen SQL-Client überprüfen, ob die Datenbankverbindung über Windows hergestellt werden kann. Ich verwende hierfür DBeaver Community Editon (Setup-exe: https://dbeaver.io/files/dbeaver-ce-latest-x86_64-setup.exe).

Unter „neue Verbindung“ wählst du hier SQL-Server aus…

Anschließend geben wir die Verbindungseigenschaften an. Als Host geben wir „localhost“ an. Als Port wird der Standard-Port 1433 verwendet. Achtung hier muss der Windows Port angegeben werden, auf den beim Starten des Containers gemappt wurde. Als Benutzer geben wird den SA (Admin) an. Auch das Passwort haben wir beim Starten des Containers angegeben. In meinem Fall lautet es UseAReallyStrongPassword!!!

Nach dem Klick auf Verbindung testen, möchte DBeaver eventuell die entsprechenden JDBC-Treiber für MSSQL downloaden. Das Dialogfenster kannst du mit „HERUNTERLADEN“ bestätigen.

Anschließend sollte der Verbindungstest erfolgreich durchgeführt worden sein:

In DBeaver sollte nur die MSSQL-Datenbank mit den Default-Tables der master-Datenbank angezeigt werden und steht nun für die Entwicklung zur Verfügung.

Achtung: Die Daten sind aktuell nicht persistent. Dh. mit dem Löschen des Containers sind auch die Daten verloren. Wie du Daten persistent speichern kannst, erfährst du in einem späteren Tutorial.