, ,

Podman Windows 安装程序中的新 Hyper-V 选项

Podman 团队在 Podman 4.8 版本中引入了对 Hyper-V 的支持。在 5.1 版本中,我们更新了 Podman Windows 安装程序,允许在安装时配置 Hyper-V。这篇博文将解释这意味着什么以及如何使用它。

Podman Machine

与 macOS 类似,Windows 上的 Podman 需要 podman-remote 客户端和一个 Linux 虚拟机 (VM)才能正常工作。

Windows 安装程序 podman-setup.exe 在 Windows 主机上安装了远程客户端 podman.exe。大多数情况下,用户不需要了解以下详细信息,但以防万一:远程客户端使用命令 podman machine init 和 podman machine start 创建并启动虚拟机。之后,Podman 可以像往常一样用于管理容器,这些容器在 Windows 上运行在 Linux 客机虚拟机中。

Windows 上 Podman 的用户体验应该与 Linux 相同。但是,在某些情况下,需要控制运行 Podman 的虚拟机。例如,用户可能更喜欢 Windows 上的特定虚拟化提供程序,WSL 2 或 Hyper-V,我们将在下面讨论。

WSL 2 和 Hyper-V

在最新版本的 Windows1 上,有两种方法可以本地运行 Linux 虚拟机:Windows Subsystem for Linux v2 (WSL 2) 和 Hyper-V。两者都使用相同的底层 Windows 虚拟化技术,但前者使用 Hyper-V 功能的高度优化子集,被认为是轻量级虚拟化。如果您不知道应该使用哪一个,您可能想要使用 WSL 2。

如果您想要… 使用 WSL 2

您计划仅使用 VM 运行 Podman 机器。WSL 2 比 Hyper-V 更轻,非常适合运行容器。它也是 Windows 10 及更高版本 Home 版本中唯一支持的选项。

如果您想要… 使用 Hyper-V

您已经预安装了 Hyper-V,并且您计划使用除 Microsoft WSL2 Linux 内核 之外的内核运行 VM,或者根据您公司的策略,WSL 已被禁用。

如何运行 Podman 安装程序以使用 Hyper-V

适用于 Windows 的 Podman v5.1 安装程序引入了三个新的命令行变量

  • MachineProvider:如果设置为 hyperv,安装程序将配置 Podman 以使用 Hyper-V。如果设置为 wsl 或未设置,它将配置 Podman 以使用 WSL 2。
  • HyperVCheckbox:如果设置为 1,安装程序将在 Podman 安装过程中启用 Hyper-V。如果设置为 0 或未设置,则不会启用。如果用户已安装 Hyper-V,安装程序将忽略此变量。
  • SkipConfigFileCreation:如果设置为 1,安装将不会创建配置文件。此变量有助于在存在先前版本的 Podman 时避免覆盖现有配置文件。

除了这些新变量之外,安装程序继续支持以下变量

  • InstallFolder:Podman 安装目录的路径。默认值为 C:\Program Files\RedHat\Podman
  • WSLCheckbox:如果设置为 1,安装程序将在 Podman 安装过程中启用 WSL 2。如果设置为 0 或未设置,则不会启用。如果用户已安装 WSL 2,安装程序将忽略此变量。

例如,要安装 Podman 并将其配置为使用 Hyper-V,请从 Podman GitHub 的“Releases”页面 下载安装包。在撰写本文时,当前版本为 Podman v5.1.1,此发布页面的文件名为此:podman-5.1.1-setup.exehttps://github.com/containers/podman/releases/tag/v5.1.1。下载完成后,从 Windows PowerShell 终端运行以下命令

> .\podman-<version>-setup.exe /install MachineProvider=hyperv HyperVCheckbox=1 WSLCheckbox=0

安装欢迎对话框将打开。单击“安装”按钮,等待安装完成。

安装需要重启才能启用 Hyper-V。

如果 Podman 实例已在本地安装,安装程序将保留现有的机器提供程序配置。

要验证安装是否已将 Podman 配置为使用 Hyper-v,请查看系统范围的配置文件 99-podman-machine-provider.conf

> Get-Content “$ENV:PROGRAMDATA\containers\containers.conf.d\99-podman-machine-provider.conf”
[machine]
provider="hyperv"

下一步是启动 Podman 机器。为此,请以管理员身份打开 Windows 终端并运行以下命令

> podman machine init
> podman machine start

操作系统镜像将被下载,VM 将被创建并启动。完成时,Podman 远程客户端将自动配置为连接到在 Hyper-V VM 中运行的 Podman 服务器。然后,它可以用于从 Windows 终端管理容器、Pod 和镜像(不需要管理员终端)。

下一步是什么

引入命令行参数来配置虚拟化提供程序是为 Hyper-V 提供与 WSL 2 相同级别的支持的一步。但我们尚未完成工作。特别是,我们正在研究以下改进

  • 在安装程序欢迎对话框中添加一个按钮来选择虚拟化提供程序 (问题)
  • 不要要求管理员终端来初始化和启动基于 Hyper-V 的机器(问题 12
  • 当用户已安装 Hyper-V 但未安装 WSL 2 时,使用 Hyper-V 作为默认提供程序,而不是 WSL 2
  • 如果用户已安装 WSL 2 或 Hyper-V,则不要询问是否要安装它

如果您有关于其他改进的想法,我们很乐意听取!只需在 Podman 的 GitHub Discussions 中开始讨论,或者加入 Podman 邮件列表并发送给我们信息!要加入邮件列表或了解其他通信渠道,请查看 https://podman.org.cn/community


  1. Podman 支持 Windows 11 和 Windows 10 构建 19041 或更高版本。↩︎

对“Podman Windows 安装程序中的新 Hyper-V 选项”的 2 个回复

  1. Mr William Crawley Avatar

    我有一台带有 Hyper-v 的 Windows 11 主机。我的 Hyper-v 环境也是 Windows 11,在这个环境中,我拥有所有开发工具。这样做的目的是,如果出现重大错误,我只需重建我的 VM。因此,在进行容器化时,我真的想在 VM 内进行。Docker 不支持这一点,因此我想尝试一下 Podman。我很失望地发现,它似乎也存在同样的缺陷。如果我在我的主机环境中安装它们,它们都可以工作,但是这样一来,我就无法访问位于 Hyper-v 环境中的开发内容。

    1. Mario Loriedo Avatar

      您好 William,我认为您想要的是启用嵌套虚拟化(在您的 Windows VM 中运行 Linux VM)。这在 Hyper-V 中应该是可能的(虽然我还没有测试过)。以下是启用它的说明。

发表回复

订阅

使用您的电子邮件地址注册,以便通过此网站接收电子邮件更新。


类别


搜索