NAME

PODMAN-MACHINE-init-初始化新虚拟机

SYNOPSIS

podman machine init [options] [name]

DESCRIPTION

为Podman初始化新的虚拟机。

默认计算机名称为 podman-machine-default 。如果未将计算机名称指定为参数,则新计算机将被命名 podman-machine-default

仅限无根的。

MacOS和Windows上的Podman需要一个虚拟机。这是因为容器是Linux--容器不能在任何其他操作系统上运行,因为容器的核心功能与Linux内核捆绑在一起。Podman计算机必须用于管理MacOS和Windows计算机,但可以选择在Linux上使用。

PODMAN机器初始化 初始化运行容器的新Linux虚拟机。系统会自动生成SSH密钥以访问该VM,并添加到该VM内的根帐户和用户帐户的系统连接。

默认情况下,虚拟机分发是自定义的 [Fedora CoreOS] (https:getfedora.org/en/coreos? stream=stable)基于图像推送到quay.io/podman/machine-os(构建于https://github.com/containers/podman-machine-os)。WSL是一个例外,它基于自定义的Fedora图像。

要检查您的机器操作系统是否有可用的升级,您可以运行以下命令:

$ podman machine ssh 'sudo rpm-ostree upgrade --check'

如果有更新可用,您可以重新运行上述命令并删除 --check 您的操作系统将会更新。更新后,您必须使用以下命令停止并启动计算机 podman machine stop && podman machine start 才能生效。

上述机制仅用于更新podman的补丁(Z)版本。要更新新的主要和次要版本(X.Y),请使用 podman machine os apply 命令,请参阅那里的文档了解更多信息。

注意:如上所述的更新可能会导致主机上的Podman和计算机中的Podman之间的版本不匹配。执行 podman info 应该会揭示两者的不同版本。不支持Podman主机和机器不匹配的配置。

要更新WSL图像,必须在内部运行dnf更新,请使用以下命令:

$ podman machine ssh dnf update

默认Podman机器设置可以通过 [machine] containers. inf(5)文件中的部分。

OPTIONS

--cpus =

CPU数量。

--disk-size =

来宾虚拟机的磁盘大小(GiB)。

--help

打印用法报表。

--ignition-path

点火文件的完全限定路径。

如果提供了点火文件,则将该文件复制到用户的CONF_DIR并重命名。此外,不会生成SSH密钥,也不会建立任何系统连接。假设用户手动或以其他方式处理这些事情。

--image

虚拟机映像的完全限定注册表、路径或URL。注册表目标的格式必须为 docker://registry/repo/image:version

注意:仅支持podman提供的图像。

--memory-m =

内存(MiB)。注:1024MiB=1GiB。

--now

在初始化后立即启动虚拟机。

--playbook

将提供的Ansible剧本添加到计算机,并在首次引导后执行。

注意:剧本将以虚拟机中赋予用户相同的特权执行。提供的剧本不能包括主机系统中的其他文件,因为它们不会被复制。使用 --playbook 标志将要求图像包含Ansible。提供的默认图像将包含Ansible。

--rootful

此计算机是否更喜欢RootFull (true )或无根 (false )容器执行。如果没有现有的远程连接配置,则此选项确定远程连接的默认设置。

API转发(如果可用)遵循此设置。

--swap , -s = number

交换(MiB)。注:1024 MiB = 1 GiB。

呈现 zram-generator.conf 将zram-size设置为传递给--swap的值的文件

--timezone

设置机器和容器的时区。有效值为 local 或者是 timezone 比如 America/Chicago 。值为 local ,这是默认设置,表示使用机器主机的时区。

时区设置不适用于WSL。WSL会自动将时区设置为与主机Windows操作系统相同的时区。

--usb = bus=number,devnum=numbervendor=hexadecimal,product=hexadecimal

通过USB直通将USB设备从主机分配给虚拟机。仅支持QEMU机器。

设备需要具有适当的权限才能传递到计算机。这意味着该设备需要在您的用户组中。

请注意,使用总线号和设备号更简单,但每次引导或拔下设备插头时,这些值都可能会改变。

使用供应商和产品ID指定USB时,如果多个设备具有相同的供应商和产品ID,则会分配第一个可用设备。

--user-mode-networking

指示此计算机通过主机上运行的用户空间进程转发来自来宾的流量。在某些VPN配置中,VPN可能会丢弃来自备用网络接口(包括VM网络设备)的流量。通过启用用户模式联网(设置 true ),则VPN会将所有Podman机器流量视为来自主机,从而绕过该问题。

当使用QEMU后端(Linux、Mac)时,用户模式联网是必需的,唯一允许的值是 true 。相比之下,Windows/WSL后端默认为 false ,并遵循标准的WSL网络设置。将此设置更改为 true 在Windows/WSL上通知Podman将此计算机实例启动时的WSL网络设置替换为用户模式网络分发。因为WSL在不同的发行版之间共享相同的内核,所以所有其他运行的发行版都会重复使用这个网络。同样,当最后一个计算机实例具有 true 设置停止,恢复原始网络设置。

--username

用于在远程VM中执行命令的用户名。默认值为 core 对于FCOS和 user 用于Fedora(Windows主机上的默认设置)。应该与生成的虚拟机映像中使用的匹配。

--volume-v = source:target[:options]

将卷从源装载到目标。

创建装载。如果将/host-dir:/Machine-dir指定为 *source:target* ,Podman将宿主中的 host-dir 挂载到 在Podman机器的 machine-dir

可以将其他选项指定为逗号分隔的字符串。可识别的选项包括:

  • ro :以只读方式装载卷

  • rw :装载卷读/写(默认)

  • security_model=[model] :指定9P安全模式(见下文)

注意:以下目标是禁止卷的: /bin , /boot , /dev , /etc , /home , /proc , /root , /run , /sbin , /sys , /tmp , /usr ,而且 /var .允许这些目标的子目录,但用户应小心不要装载到重要目录,因为可能会出现意外结果。

9P安全模式 [determines] Https://wiki.qemu.org/Documentation/9psetup#Starting_the_Guest_directly 9P文件系统在主机上实际存储之前是否以及如何转换某些文件系统操作。

为了允许符号链接工作,在MacOS上默认的安全模型是 none

的价值 mapped-xattr 指定9P将符号链接和某些文件属性作为扩展属性存储在主机上。当主机和来宾不需要在共享文件系统上互操作,但对实际共享访问有警告时,这是合适的;值得注意的是,主机上的符号链接在来宾上不可用,反之亦然。如果需要互操作性,则选择 none 相反,但请记住,来宾不能做运行虚拟机的用户不能做的事情,例如创建另一个用户拥有的文件。vbl.使用 none 几乎肯定是只读卷的最佳选择。

示例: -v "$HOME/git:$HOME/git:ro,security_model=none"

默认卷装载在中定义 containers.conf 。除非更改,否则默认为 $HOME:$HOME

Note on Windows Subsystem for Linux (WSL) 由于所有驱动器都安装在 /mnt WSL中默认启动时,传递 --volume 是多余的并且没有任何作用。的主机主目录 C: 驱动器将安装在 /mnt/c/Users/<my username> .

EXAMPLES

初始化默认的Podman机器,从互联网获取内容。

$ podman machine init

使用指定的名称初始化一台Podman机器,从互联网上拉出内容。

$ podman machine init myvm

初始化默认的Podman机器,将互联网上的内容拉入默认的Rootful模式。默认设置为无根。

$ podman machine init --rootful

初始化默认的Podman计算机,覆盖其磁盘大小覆盖,从互联网上提取内容。

$ podman machine init --disk-size 50

初始化指定的Podman计算机,覆盖其内存大小,从互联网上拉出内容。

$ podman machine init --memory=1024 myvm

使用主机目录初始化默认Podman机器 /Users 安装到虚拟机中的位置 /Users .

$ podman machine init -v /Users:/Users

使用选项指定的USB设备直通初始化默认的Podman计算机。仅支持QEMU机器。

$ podman machine init --usb vendor=13d3,product=5406

使用带有指定选项的USB设备通过来初始化默认的Podman计算机。仅支持QEMU机器。

$ podman machine init --usb bus=1,devnum=3

另请参阅

podman(1) , podman-machine(1) , containers.conf(5)

HISTORY

2021年3月,最初由Ashley Cuiacui@redhat.com汇编