Dokumentation
Podman arbeitet im Gegensatz zu Docker im User-Kontext und ohne root Rechte.
Erstellen eines pods mit mariadb und phpmyadmin
Podman Netzwerke
Image Pull
podman pull docker.io/library/mariadb:11
podman pull docker.io/library/phpmyadmin
Pod erstellen
„Pods“ sind Gruppen von funktional miteinander verbundenen Containern. Das Konzept ähnelt den Pods in Kubernetes, ist aber weniger komplex.
Im Beispiel wird ein Pod erzeugt, der eine mariadb Datenbank und eine Web-Anwendung (phpmyadmin) sowie einen Webserver (Apache) enthält. Der Apache ist Teil des phpmyadmin Containers.
Der Pod enthält automatisch einen infra Container. Sein Zweck besteht darin, die mit dem Pod verbundenen Namespaces zu verwalten und es Podman zu ermöglichen, andere Container mit dem Pod zu verbinden.
Die gewünschten Ports, die nach aussen sichtbar sind, werden gleich angegeben
podman pod create --name mariadb -p 8080:80 -p 3306:3306 -p 8081:8081
Container zum Pod hinzufügen
Volume für persistente Daten anlegen
podman volume create mariadb-data
mariadb Container anlegen und zum Pod hinzufügen
mariadb mit root PW, Zusatz-Datenbank und Volume, auf dem die Daten liegen. Konfigurations-Parameter werden über Umgebungsvariablen mit „-e“ mit gegeben.
podman run -d --pod mariadb --name mariadb-db -e MYSQL_ROOT_PASSWORD=xxxxxx -e MYSQL_DATABASE=digikam -e MYSQL_USER=digikam -e MYSQL_PASSWORD=digikam -v mariadb-data:/var/lib/mysql:Z mariadb
phpmysql Container hinzufügen
Der Apache im Container horcht auf Port 8081
podman run -d --pod mariadb --name phpmyadmin -e PMA_HOST=127.0.0.1 -e PMA_PORT=3306 -e APACHE_PORT=8081 phpmyadmin:latest
Test
curl localhost:8081
Container betreten
root@thommienas:/# podman exec -it 81c9ba1625db mariadb -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 12.3.2-MariaDB-ubu2404 mariadb.org binary distribution
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Datenbanken im Container zeigen
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.000 sec)
Autostart
Weil die Container/Pods im Userkontext laufen, ist das Zusammenspiel mitn systemd etwas anders als bei Docker
Pod inspizieren
podman pod inspect mariadb
Welche Container sind im Pod
podman pod inspect mariadb --format '{{range .Containers}}{{.Id}}{{"\n"}}{{end}}'
Namen und IDs
podman pod inspect my-pod --format '{{range .Containers}}{{.Name}} ({{.Id}}){{"\n"}}{{end}}'
Podman Netzwerke
root@thommienas:~# podman pod inspect mariadb0 --format '{{.InfraConfig.PortBindings}}'
map[3306/tcp:[{0.0.0.0 3306}] 80/tcp:[{0.0.0.0 8080}]]
Netzwerk Name
podman pod inspect my-pod --format '{{.InfraConfig.Networks}}
Podman Quadlets
Dryrun
/usr/lib/systemd/system-generators/podman-system-generator --dryrun
Debug
