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 100GiBRootless 模式(默认):虚拟机内 Podman 以普通用户运行,安全但部分权限受限(如无法绑定 1024 以下端口);
Rootful 模式:虚拟机内 Podman 以 root 运行,支持所有容器操作,需通过 podman machine init --rootful 或 podman machine set --rootful 开启。