Podman 6:机器可用性改进
我想介绍我们在 Podman 6 中对机器功能所做的重要更改。为了理解问题和变化,我们首先需要确认 Podman 机器是基于提供者的概念。提供者是一个通用术语,用于描述 Podman 如何运行 Linux 虚拟机。以下表格是按平台列出的提供者列表。 | 平台 | 支持的提供者 | | ------ | ------------------ | | Windows | WSL 1, HyperV | | Linux | QEMU 1 | | MacOS | Libkrun 1, Applehv 2 | 1 默认值适用于 Podman 6 的平台 2 默认值适用于 Podman 5 在 Podman 5 中,特别是在使用 Podman Desktop 以及支持多个提供者的平台时,您可以在不更改 ~/.config/containers/containers.conf 中定义的默认提供者的情况下,为任一提供者创建机器。因此,如果您在 Podman Desktop 中创建或运行了非默认提供者的机器,然后决定使用 Podman CLI,CLI 将对机器的存在一无所知。这是因为 Podman 只知道在其默认提供者的范围内存在的机器——有一两个小的例外。 考虑以下情况: ``` $ podman -v podman version 5.7.0-dev ``` 在 Podman 5 中,每个平台的默认提供者是在 Podman 二进制文件中硬编码的。它可以在 containers.conf 中被覆盖。这表明我们正在将 libkrun 设置为默认机器提供者。 ``` $ cat ~/.config/containers/containers.conf [machine] provider="libkrun" ``` 现在,假设在 Podman Desktop 或通过其他方式,我们创建了一个机器,并且我们知道它正在运行。要获取 Podman 5 中所有机器的全局视图,您可以使用 --all-providers 命令行开关与 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 ``` 然而,使用 Podman 5 CLI,试图通过名称停止机器时,我们看到如下错误: ``` $ podman machine stop applehv-machine-1 Error: applehv-machine-1: VM does not exist ``` 在 Podman 6 中,我们着重减少机器提供者的显著性。对于像 rm、stop、start(及其他)这样的命令,我们希望用户能够简单地提供机器名称,无论提供者如何,Podman 都会采取行动。现在随着我们的上游主分支切换到 Podman 6 开发,我已经开始更改这个基本功能。 ``` $ podman -v podman version 6.0.0-dev ``` 现在使用 Podman 6: ``` $ podman machine stop applehv-machine-1 Machine "applehv-machine-1" stopped successfully ``` 另外,请注意,我已从机器命令中移除了 --all-providers,但现在的默认行为是显示所有支持的提供者的所有机器。 ``` $ 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 ``` 此工作的第二个进展是关于机器的创建。这是通过 podman machine init 命令完成的。现在,您可以使用新的 --provider 命令行开关在非默认提供者中创建机器。考虑这个案例,其中 libkrun 是默认提供者,但我想创建一个使用 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" … <省略以节省空间> Machine "applehv-machine-2" started successfully ``` 快速的 machine ls 确认新机器已使用正确的提供者创建。 ``` $ podman machine ls NAME VM TYPE CREATED LAST UP CPUS MEMORY DISK SIZE applehv-machine-2 applehv 56 seconds ago Currently running 6 2GiB 100GiB applehv-machine-1 applehv 10 minutes ago About a minute ago 6 2GiB 100GiB podman-machine-default* libkrun 28 minutes ago 10 minutes ago 6 2GiB 100GiB ``` 如果您对 Podman 6 的动态和开发感兴趣,我们的上游仓库是获取信息的最佳地方。我们始终在寻找各种技能的人来帮助我们的项目。除了编码之外,还有很多方法可以贡献。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡