Podman 6: Verbesserungen in der Nutzbarkeit von Maschinen
Ich wollte einen bedeutenden Wechsel einführen, den wir in Podman 6 für unsere Maschinenfunktion durchführen. Um das Problem und den Wechsel zu verstehen, müssen wir feststellen, dass die Podman-Maschine auf einem Konzept von Providern basiert. Der Provider ist ein allgemeiner Begriff, der beschreibt, wie Podman die Linux-Virtualmaschine ausführt. Die folgende Tabelle ist eine Liste der Providern nach Plattform.
| Plattform | Unterstützte Providern |
|---|---|
| Windows | WSL, HyperV |
| Linux | QEMU |
| MacOS | Libkrun, Applehv |
In Podman 5, insbesondere mit der Verwendung von Podman Desktop und mit Plattformen, die mehrere Providern unterstützen, war es möglich, Maschinen für einen anderen Provider zu erstellen, ohne den vordefinierten Provider in ~/.config/containers/containers.conf zu ändern. Also, wenn du eine Maschine in einem nicht vordefinierten Provider mit Podman Desktop erstellt hast und dann die Podman-CLI verwendet hast, war die CLI unbewusst von der Existenz der Maschine. Dies liegt daran, dass Podman nur von Maschinen und der Existenz von Maschinen innerhalb der Grenzen seines vordefinierten Providers wusste–mit einigen kleineren Ausnahmen.
Betrachten Sie folgendes:
$ podman -v
podman version 5.7.0-dev
In Podman 5 war der vordefinierte Provider pro Plattform im Podman-Binärdatei hardcoded. Es konnte in containers.conf überschrieben werden. Dies zeigt, dass wir libkrun als vordefinierten Maschinenprovider setzen.
$ cat ~/.config/containers/containers.conf
[machine]
provider="libkrun"
Nehmen wir an, dass wir in Podman Desktop oder über andere Mittel eine Maschine erstellt haben und wissen, dass sie läuft. Um eine globale Sicht aller Maschinen in Podman 5 zu erhalten, konnten wir den Flag --all-providers mit podman machine ls verwenden.
$ podman machine ls --all-providers
NAME VM TYPE CREATED LAST UP CPUS MEMORY DISK SIZE
applehv-machine-1 applehv 8 minutes ago Currently running 6 2GiB 100GiB
podman-machine-default* libkrun 26 minutes ago 8 minutes ago 6 2GiB 100GiB
Allerdings verwendet die Podman-CLI 5, wenn man versucht, die Maschine durch ihren Namen zu beenden, einen Fehler wie folgt:
$ podman machine stop applehv-machine-1
Error: applehv-machine-1: VM does not exist
In Podman 6 haben wir einen expliziten Wechsel vorgenommen, um den Provider der Maschine weniger prominent zu machen. Für Befehle wie rm, stop, start (und andere) möchten wir, dass die Benutzer einfach den Namen der Maschine angeben und, unabhängig vom Provider, Podman handeln. Und jetzt, dass unser upstream main branch zu Podman 6 umgeschaltet hat, habe ich begonnen, diese Basisfunktion zu ändern.
$ podman -v
podman version 6.0.0-dev
Und jetzt mit Podman 6.
$ podman machine stop applehv-machine-1
Machine "applehv-machine-1" stopped successfully
Auch beachte, dass ich --all-providers aus dem Maschinenkommando entfernt habe, aber der Standardverhalten ist jetzt, alle Maschinen über alle unterstützten Providern anzuzeigen.
$ podman machine ls
NAME VM TYPE CREATED LAST UP CPUS MEMORY DISK SIZE
applehv-machine-1 applehv 8 minutes ago 15 seconds ago 6 2GiB 100GiB
podman-machine-default* libkrun 27 minutes ago 9 minutes ago 6 2GiB 100GiB
Die zweite Innovation in diesem Projekt ist die Erstellung von Maschinen. Dies wird mit dem Befehl podman machine init durchgeführt. Du kannst jetzt eine Maschine in einem nicht vordefinierten Provider erstellen, indem du den neuen Flag --provider verwendest. Überlege dir dieses Szenario, in dem libkrun der vordefinierte Provider ist, aber ich möchte eine neue Maschine erstellen, die den Provider applehv verwendet.
$ podman machine init --now --provider applehv applehv-machine-2
Looking up Podman Machine image at quay.io/podman/machine-os:6.0 to create VM
Extracting compressed file: applehv-machine-2-arm64.raw: done
Machine init complete
Starting machine "applehv-machine-2"
… <omited for brevity>
Machine "applehv-machine-2" started succe
Kommentare (0)
Login or Register to apply