Podman 6: mejoras en la usabilidad de las máquinas
Quería introducir un cambio significativo que estamos haciendo en Podman 6 para nuestra función de máquina. Para entender el problema y el cambio, debemos establecer que la máquina Podman está basada en un concepto de proveedores. El proveedor es un término genérico que describe cómo Podman ejecuta la máquina virtual Linux. La siguiente tabla es una lista de proveedores por plataforma.
| Plataforma | Proveedores soportados |
|---|---|
| Windows | WSL, HyperV |
| Linux | QEMU |
| MacOS | Libkrun, Applehv |
En Podman 5, en particular con el uso de Podman Desktop y con las plataformas que soportan múltiples proveedores, era posible crear máquinas para un proveedor diferente sin cambiar el proveedor predeterminado definido en ~/.config/containers/containers.conf. Entonces si creaste o ejecutaste una máquina en un proveedor no predeterminado con Podman Desktop y luego decidiste utilizar la CLI de Podman, la CLI sería ignorante de la existencia de la máquina. Esto se debe a que Podman solo era consciente de las máquinas y la existencia de las máquinas dentro de los límites de su proveedor predeterminado–con algunas excepciones menores.
Considera el siguiente:
$ podman -v
podman version 5.7.0-dev
En Podman 5, el proveedor predeterminado por plataforma estaba hardcoded en el binario de Podman. Pudo ser sobrescrito en containers.conf. Esto indica que estamos estableciendo libkrun como proveedor de máquina predeterminado.
$ cat ~/.config/containers/containers.conf
[machine]
provider="libkrun"
Supongamos ahora que en Podman Desktop o mediante otros medios hemos creado una máquina y sabemos que está en ejecución. Para obtener una visión global de todas las máquinas en Podman 5, podríamos utilizar el flag de línea de comandos --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
Sin embargo, utilizando la CLI de Podman 5, cuando se intenta detener la máquina con el nombre se obtiene un error como el siguiente:
$ podman machine stop applehv-machine-1
Error: applehv-machine-1: VM does not exist
En Podman 6, hemos hecho un cambio explícito para hacer menos prominente el proveedor de máquina. Para comandos como rm, stop, start (y otros), queremos que los usuarios puedan simplemente proporcionar el nombre de la máquina y, independientemente del proveedor, Podman actuará. Y ahora que nuestro upstream main branch ha cambiado a Podman 6 desarrollo, he comenzado a modificar esta función base.
$ podman -v
podman version 6.0.0-dev
Y ahora con Podman 6.
$ podman machine stop applehv-machine-1
Machine "applehv-machine-1" stopped successfully
También nota que he eliminado --all-providers del comando de máquina pero el comportamiento predeterminado es ahora mostrar todas las máquinas across todos los proveedores soportados.
$ 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 segunda innovación en este trabajo es alrededor de la creación de máquinas. Esto se hace con el comando podman machine init. Puedes ahora crear una máquina en un proveedor no predeterminado con el nuevo flag de línea de comandos --provider. Considera este caso en el que libkrun es el proveedor predeterminado, pero quiero crear una nueva máquina que utilice el proveedor 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
Comentarios (0)
Login or Register to apply