, ,

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

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

Podman 机器

与 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 子系统 for Linux v2 (WSL 2) 和 Hyper-V。两者都使用相同的底层 Windows 虚拟化技术,但前者使用 Hyper-V 功能的高度优化子集,被认为是轻量级虚拟化。如果您不知道应该使用哪一个,您可能想要使用 WSL 2。

如果使用 WSL 2…

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

如果使用 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 讨论区 中发起讨论,或加入 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 应该能够做到这一点(但我还没有测试过)。这是启用它的说明。

回复 William Crawley 先生取消回复

订阅

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


类别


搜索