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