WSL mit RAM disk und Podman

Für eine schnelle und nicht permanente Umgebung, in der man Docker Container testen und entwickeln kann, bietet sich die Verwendung einer WSL an.
Da wir Docker gern vermeiden wollen setzen wir in diesem Fall auf Podman als Alternative.

Wir gehen von einem aktuellem und frischem Ubuntu in der WSL aus.

Hier sind die Schritte, um Podman in der Ubuntu-Umgebung mit Ramdisk zu verwenden:

Podman auf Ubuntu installieren

Standardmäßig ist das Podman-Paket im Ubuntu-Standard-Repository enthalten.
Es kann installiert werden, indem einfach der folgende Befehl geführt wird:

sudo apt install podman -y

Sobald Podman installiert ist, kann dessen Funktion mit dem folgenden Befehl überprüft werden:

podman -v

Ramdisk erstellen

Eine Ramdisk ist ein temporärer Speicherbereich im Arbeitsspeicher.
Es wurd ein Verzeichnis erstellt in dem die Ramdisk gemountet werden soll:

sudo mkdir /mnt/ramdisk

In die Datei /etc/fstab wird der folgende Inhalt, zum Beispiel mit sudo nano /etc/fstab ergänzt:

tmpfs /mnt/ramdisk tmpfs rw,nosuid,noatime,nodev,size=100gb,mode=1777 0 0

Erklärung zum Befehl

tmpfs
Dies ist der Typ des Dateisystems. tmpfs ist ein virtuelles Dateisystem im Arbeitsspeicher (RAM-Disk), das temporäre Dateien speichert.
/mnt/ramdisk
Dies ist das Zielverzeichnis, in dem die RAM-Disk gemountet wird. In diesem Fall wird die RAM-Disk im Verzeichnis /mnt/ramdisk platziert.
tmpfs
Dies ist der Typ des Dateisystems, der wiederholt wird. Es zeigt an, dass es sich um eine RAM-Disk handelt.
rw
Dies steht für "read-write" und gibt an, dass das Dateisystem sowohl zum Lesen als auch zum Schreiben verfügbar ist.
nosuid
Dies ist eine Sicherheitsoption, die verhindert, dass ausführbare Dateien mit SUID-Berechtigungen (Set-User-ID) auf der RAM-Disk ausgeführt werden können.
noatime
Diese Option verhindert, dass der Zugriffszeitstempel (atime) für Dateien auf der RAM-Disk aktualisiert wird. Dies kann die Leistung verbessern.
nodev
Diese Option verhindert, dass Gerätedateien auf der RAM-Disk erstellt werden können.
size=32gb
Dies legt die Größe der RAM-Disk fest. In diesem Fall beträgt die Größe 32 GB. Du kannst diese Zahl an deine Anforderungen anpassen.
mode=1777
Dies setzt die Berechtigungen für das Verzeichnis /mnt/ramdisk. Das 1777-Bitmuster bedeutet, dass das Verzeichnis für alle Benutzer lesbar, schreibbar und ausführbar ist. Das zusätzliche 1 am Anfang stellt sicher, dass Dateien, die in diesem Verzeichnis erstellt werden, ebenfalls ausführbar sind.
0 0
Dies sind die Optionen für das Dumping und das automatische Dateisystem-Checken. In diesem Fall sind sie auf 0 gesetzt, was bedeutet, dass diese Funktionen deaktiviert sind.

Podman mit der Ramdisk verwenden

Podman muss so konfiguriert werden, dass es die Ramdisk für temporäre Dateien verwendet.
Bearbeite dazu die Datei /etc/containers/storage.conf:

sudo nano /etc/containers/storage.conf

Füge die folgenden Zeilen hinzu:

[storage]
driver = "overlay"
runroot = "/mnt/ramdisk/podman/run"
graphroot = "/mnt/ramdisk/podman/graph"

Podman starten und testen

Zur Sicherheit sollte der Podman-Dienst noch einmal neugestartet werden:

sudo systemctl restart podman

Überprüfe, ob Podman die Ramdisk verwendet:

podman info

Dabei sollte der Pfad zur Ramdisk unter RunRoot und GraphRoot sehen.

Einen Hello-World Container mit kann man mit podman run hello-world starten und sich dann die Liste der verfügbaren Images mit podman image ls -a anschauen.

Startet man die WSL neu (mit sudo reboot in der WSL oder wsl --shutdown in der PowerShell hat mam wieder eine frische und leere Podman Umgebung.

Quellen: