podman machine 是 Podman 专为 macOS/Windows 平台 设计的核心命令(Linux 平台无需此命令,直接原生运行 Podman),用于管理 Podman 依赖的轻量级虚拟机(基于 QEMU/Lima(macOS)、WSL2(Windows)),实现跨平台运行容器的能力。
该命令涵盖虚拟机的创建、启动、停止、删除、配置修改等全生命周期管理,是 macOS/Windows 下使用 Podman 的基础。
Linux 是容器的原生运行环境,而 macOS/Windows 无法直接运行 Linux 容器。podman machine 通过创建一个轻量级 Linux 虚拟机(VM),在其中运行 Podman 守护进程,从而让 macOS/Windows 用户无缝使用 Podman 命令。
平台 | 虚拟机底层技术 | 默认 VM 系统 |
macOS | Lima + QEMU | Fedora CoreOS |
Windows | WSL2 | Fedora/CentOS |
注意:Podman 本身的核心特性是「无守护进程(daemonless)」,但 podman machine 为了适配 macOS/Windows 系统,在创建的 Linux 虚拟机内会运行 Podman 守护进程(podman service)—— 这是跨平台适配的特殊场景,并非 Podman 原生架构的改变。
初始化 Podman 虚拟机(仅首次使用需执行),支持自定义配置(内存、CPU、磁盘大小等)。例如:
# 创建默认虚拟机(命名为 "podman-machine-default") podman machine init # 自定义配置:指定 CPU 核心数、内存、磁盘大小 podman machine init \ --cpus 4 \ # 4 核 CPU --memory 8192 \ # 8GB 内存(单位:MB) --disk-size 40 \ # 40GB 磁盘(单位:GB) my-podman-vm # 自定义虚拟机名称
关键选项:
--cpus N 虚拟机 CPU 核心数(默认 2)
--memory N 虚拟机内存大小(MB,默认 2048 → 2GB)
--disk-size N 虚拟机磁盘大小(GB,默认 10GB)
--volume string 挂载宿主机目录到虚拟机(如 --volume ~/data:/mnt/data)
--rootful 以 root 模式运行 Podman 守护进程(默认 rootless)
示例:
C:\Users\Administrator> podman machine init --cpus 4 --memory 8192 --disk-size 40 my-podman-vm Looking up Podman Machine image at quay.io/podman/machine-os:5.7 to create VM Getting image source signatures Copying blob a88eaedde7e2 done | Copying config 44136fa355 done | Writing manifest to image destination a88eaedde7e2006df5c34894695ebd1d6beda57d92a4492a5a670ed20609cdf1 Extracting compressed file: my-podman-vm-amd64: done Importing operating system into WSL (this may take a few minutes on a new WSL install)... 操作成功完成。 Configuring system... Machine init complete To start your machine run: podman machine start my-podman-vm
启动已创建的 Podman 虚拟机,启动后才能执行 podman run/podman pull 等容器命令。用法示例:
(1)启动默认虚拟机 podman machine start
C:\Users\Administrator> podman machine start Starting machine "podman-machine-default" This machine is currently configured in rootless mode. If your containers require root permissions (e.g. ports < 1024), or if you run into compatibility issues with non-podman clients, you can switch using the following command: podman machine set --rootful API forwarding listening on: npipe:////./pipe/docker_engine Docker API clients default to this address. You do not need to set DOCKER_HOST. Machine "podman-machine-default" started successfully
(2)启动指定名称的虚拟机 podman machine start my-podman-vm,虚拟机名为 my-podman-vm
C:\Users\Administrator> podman machine start my-podman-vm Starting machine "my-podman-vm" This machine is currently configured in rootless mode. If your containers require root permissions (e.g. ports < 1024), or if you run into compatibility issues with non-podman clients, you can switch using the following command: podman machine set --rootful my-podman-vm API forwarding listening on: npipe:////./pipe/docker_engine Docker API clients default to this address. You do not need to set DOCKER_HOST. Machine "my-podman-vm" started successfully
优雅停止 Podman 虚拟机,释放宿主机资源。用法示例:
(1)停止默认虚拟机
# 停止默认虚拟机 podman machine stop C:\Users\Administrator> podman machine stop Machine "podman-machine-default" stopped successfully
(2)停止指定虚拟机
# 停止名为 my-podman-vm 的虚拟机 podman machine stop my-podman-vm C:\Users\Administrator> podman machine stop my-podman-vm Machine "my-podman-vm" stopped successfully
通过 SSH 进入 Podman 虚拟机的命令行,用于调试虚拟机内的 Podman 配置、查看容器日志等。用法示例:
(1)进入默认虚拟机
# 进入默认虚拟机 podman machine ssh C:\Users\Administrator> podman machine ssh Connecting to vm podman-machine-default. To close connection, use `~.` or `exit` Last login: Tue Dec 16 09:38:54 2025 [user@CDLPF2YBXYD ~]$ ls custom_volumes script.sh [user@CDLPF2YBXYD ~]$
(2)以 root 用户进入虚拟机(调试权限问题)
# 以 root 用户进入虚拟机(调试权限问题) podman machine ssh --username root C:\Users\Administrator> podman machine ssh --username root Connecting to vm podman-machine-default. To close connection, use `~.` or `exit` [root@CDLPF2YBXYD ~]# ls bootstrap [root@CDLPF2YBXYD ~]# pwd /root [root@CDLPF2YBXYD ~]#
(3)进入指定虚拟机并执行命令(无需交互)
# 进入指定虚拟机并执行命令(无需交互) podman machine ssh my-podman-vm "podman ps -a" C:\Users\Administrator> podman machine ssh my-podman-vm "podman ps -a" CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES C:\Users\Administrator>
查看所有 Podman 虚拟机的状态、名称、资源配置等。用法示例:
# 列出所有虚拟机 podman machine ls C:\Users\Administrator> podman machine ls NAME VM TYPE CREATED LAST UP CPUS MEMORY DISK SIZE my-podman-vm wsl 16 minutes ago Currently running 4 8GiB 40GiB podman-machine-default* wsl 5 weeks ago About a minute ago 4 2GiB 100GiB
输出虚拟机的完整配置(网络、存储、路径、PID 等),用于排查虚拟机问题。用法示例:
# 查看默认虚拟机详情(JSON 格式)
podman machine inspect
C:\Users\Administrator> podman machine inspect
[
{
"ConfigDir": {
"Path": "C:\\Users\\Administrator\\.config\\containers\\podman\\machine\\wsl"
},
"ConnectionInfo": {
"PodmanSocket": {
"Path": "C:\\Users\\ADMINI~1\\AppData\\Local\\Temp\\podman\\podman-machine-default-api.sock"
},
"PodmanPipe": {
"Path": "\\\\.\\pipe\\podman-machine-default"
}
},
"Created": "2025-11-07T13:38:32.2581099+08:00",
"LastUp": "2025-12-16T10:26:32.998744+08:00",
"Name": "podman-machine-default",
"Resources": {
"CPUs": 4,
"DiskSize": 100,
"Memory": 2048,
"USBs": []
},
"SSHConfig": {
"IdentityPath": "C:\\Users\\Administrator\\.local\\share\\containers\\podman\\machine\\machine",
"Port": 53840,
"RemoteUsername": "user"
},
"State": "stopped",
"UserModeNetworking": false,
"Rootful": false,
"Rosetta": false
}
]查看指定虚拟机详情使用 podman machine inspect my-podman-vm 命令,核心输出字段:
ConfigPath:虚拟机配置文件路径;
ConnectionInfo:Podman 连接信息(如 SSH 地址、端口);
Resources:CPU / 内存 / 磁盘配置;
State:虚拟机状态(Running/Stopped);
Rootful:是否为 root 模式。
修改已创建虚拟机的配置(内存、CPU、网络等),需重启虚拟机生效。用法示例:
# 修改默认虚拟机内存为 4GB,CPU 为 4 核 podman machine set --memory 4096 --cpus 4 # 开启 rootful 模式 podman machine set --rootful
注意:Podman 在 Windows 上的 machine 分两种类型
WSL 后端(默认):基于 Windows Subsystem for Linux 2 构建,无法通过 podman machine set 修改内存,需直接修改 WSL 配置;
Hyper-V 后端:传统虚拟机,支持 --memory 等参数修改。
删除指定的 Podman 虚拟机(包括磁盘文件),释放宿主机空间。用法示例:
# 删除默认虚拟机(需先停止) podman machine stop && podman machine rm # 强制删除(无需停止,直接删除) podman machine rm --force # 删除指定虚拟机 podman machine rm my-podman-vm C:\Users\Administrator\.config\containers\podman\machine\wsl\my-podman-vm.json C:\Users\ADMINI~1\AppData\Local\Temp\podman\my-podman-vm.sock C:\Users\ADMINI~1\AppData\Local\Temp\podman\my-podman-vm-gvproxy.sock C:\Users\ADMINI~1\AppData\Local\Temp\podman\my-podman-vm-api.sock C:\Users\ADMINI~1\AppData\Local\Temp\podman\my-podman-vm.log Are you sure you want to continue? [y/N] # 强制删除(无需停止,直接删除) podman machine rm --force my-podman-vm C:\Users\Administrator> podman machine rm --force my-podman-vm 正在注销。 操作成功完成。 C:\Users\Administrator> podman machine ls NAME VM TYPE CREATED LAST UP CPUS MEMORY DISK SIZE podman-machine-default* wsl 5 weeks ago 10 minutes ago 4 2GiB 100GiB
Rootless 模式(默认):虚拟机内 Podman 以普通用户运行,安全但部分权限受限(如无法绑定 1024 以下端口);
Rootful 模式:虚拟机内 Podman 以 root 运行,支持所有容器操作,需通过 podman machine init --rootful 或 podman machine set --rootful 开启。