Torna alle Notizie
DevOps

Podman 6: miglioramenti nell'usabilità delle macchine

7 giugno 2026Fonte

Podman 6: miglioramenti nell'usabilità delle macchine

Volevo introdurre un cambiamento significativo che stiamo facendo in Podman 6 per la nostra funzione di macchina. Per comprendere il problema e il cambiamento, dobbiamo prima stabilire che la macchina Podman è basata su un concetto di provider. Il provider è un termine generico che descrive come Podman esegue la macchina virtuale Linux. La seguente tabella è una lista di provider per piattaforma.

Piattaforma Provider supportati
Windows WSL, HyperV
Linux QEMU
MacOS Libkrun, Applehv

In Podman 5, in particolare con l'uso di Podman Desktop e con le piattaforme che supportano più provider, era possibile creare macchine per un provider diverso senza cambiare il provider predefinito definito in ~/.config/containers/containers.conf. Quindi se hai creato o eseguito una macchina in un provider non predefinito con Podman Desktop e poi hai deciso di utilizzare la CLI di Podman, la CLI sarebbe stata ignara dell'esistenza della macchina. Ciò è dovuto al fatto che Podman era solo consapevole delle macchine e dell'esistenza delle macchine all'interno dei confini del suo provider predefinito–con alcune eccezioni minori.

Considera il seguente:

$ podman -v
podman version 5.7.0-dev

In Podman 5, il provider predefinito per piattaforma era hardcoded nel binario di Podman. Poteva essere sovrascritto in containers.conf. Ciò indica che stiamo impostando libkrun come provider di macchina predefinito.

$ cat ~/.config/containers/containers.conf
[machine]
provider="libkrun"

Supponiamo ora che in Podman Desktop o tramite altri mezzi abbiamo creato una macchina e sappiamo che è in esecuzione. Per ottenere una visione globale di tutte le macchine in Podman 5, potevamo utilizzare il flag di riga di comando --all-providers con podman machine ls.

$ 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

Tuttavia, utilizzando la CLI di Podman 5, quando si tenta di fermare la macchina con il nome si ottiene un errore come il seguente:

$ podman machine stop applehv-machine-1
Error: applehv-machine-1: VM does not exist

In Podman 6, abbiamo fatto un'impostazione esplicita per rendere meno prominente il provider di macchina. Per comandi come rm, stop, start (e altri), vogliamo che gli utenti possano semplicemente fornire il nome della macchina e, indipendentemente dal provider, Podman agirà. E ora che il nostro upstream main branch ha cambiato a Podman 6 sviluppo, ho iniziato a modificare questa base funzione.

$ podman -v
podman version 6.0.0-dev

E ora con Podman 6.

$ podman machine stop applehv-machine-1
Machine "applehv-machine-1" stopped successfully

Nota anche che ho rimosso --all-providers dal comando di macchina ma il comportamento predefinito è ora di mostrare tutte le macchine across tutti i provider supportati.

$ 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

La seconda innovazione in questo lavoro è intorno alla creazione delle macchine. Ciò è fatto con il comando podman machine init. Puoi ora creare una macchina in un provider non predefinito con il nuovo flag di riga di comando --provider. Considera questo caso in cui libkrun è il provider predefinito, ma voglio creare una nuova macchina che utilizza il provider applehv.

$ 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

Commenti (0)

Accedi o Registrati per candidarti