podman(1) : 无wsl2的Windows系统安装podman cli(无用, 没法使用, 必须依赖wsl2)
特性DockerPodman架构Client-Server (依赖dockerd守护进程)无守护进程 (Fork-Exec 模型)单点故障有 (守护进程挂掉影响所有容器)无 (容器相互独立)Root 权限默认需要 Root (Rootless 需配置)原生支持 Rootless (默认安全)Pod 支持不支持 (需 Docker Compose)原生支持 (类似 Kubernetes)K8s 兼容
1.使用Hyper-V替代WSL2
Podman从4.8版本开始支持Hyper-V,5.1版本以后安装体验已经很完善了。这对于我们来说是个好消息——Hyper-V是Windows的原生虚拟化平台,不需要折腾Ubuntu安装。
📋 操作步骤
1. 检查系统要求
-
Windows 10 专业版/企业版/教育版(家庭版不支持Hyper-V)
-
64位系统
-
如果是在虚拟机里运行,需要启用嵌套虚拟化
2. 启用Hyper-V功能
以管理员身份打开PowerShell,执行:
dism.exe /online /enable-feature /featurename:Microsoft-Hyper-V /all /norestart
然后重启电脑。
3. 下载Podman安装包
访问Podman的GitHub发布页面,下载最新的 podman-<version>-setup.exe 。
当前时间版本为5.8.0, 下载地址 : https://github.com/containers/podman/releases/download/v5.8.0/podman-5.8.0-setup.exe
4. 使用命令行安装并指定Hyper-V
以管理员身份打开PowerShell,进入到安装包所在目录,然后执行:
.\podman-<version>-setup.exe /install MachineProvider=hyperv HyperVCheckbox=1 WSLCheckbox=0
这里的参数含义是:
-
MachineProvider=hyperv:指定使用Hyper-V作为虚拟机provider -
HyperVCheckbox=1:启用Hyper-V(如果之前没完全启用) -
WSLCheckbox=0:不启用WSL
安装向导会弹出,点击"Install"即可。
5. 初始化并启动Podman虚拟机
安装完成后,仍然在管理员PowerShell中执行:
podman machine init
podman machine start
第一次启动会下载一个轻量级的Linux镜像并创建虚拟机。完成后,Podman就可以正常使用了。
6. 验证安装
podman run hello-world
能看到欢迎信息就说明成功了。
💡 为什么这个方案适合你
|
方案 |
依赖 |
你的情况 |
可行性 |
|
WSL2 |
需要Ubuntu发行版正常安装 |
一直报错卡住 |
❌ 受阻 |
|
Hyper-V |
Windows专业版及以上 |
无需折腾Ubuntu |
✅ 可行 |
⚠️ 注意事项
-
家庭版用户:如果你的Windows 10是家庭版,确实不支持Hyper-V。这种情况下还有一个备选方案——使用Podman的rootless模式,但这个功能目前还在开发中,不够成熟。
-
后续使用:Hyper-V虚拟机启动后,日常使用Podman命令不需要一直开着管理员权限的终端,普通权限即可。
-
资源占用:Hyper-V比WSL2稍微重一点,但运行容器完全没问题。
2.podman是什么? 和docker区别
Podman (POD Manager) 是一个开源的、无守护进程(Daemonless)的容器引擎,主要用于在 Linux 系统上开发、管理和运行 OCI(Open Container Initiative)标准的容器和 Pod。它由 Red Hat 主导开发,旨在提供一个更安全、更轻量且与 Kubernetes 理念更契合的 Docker 替代方案。
简单来说,Podman 可以做 Docker 能做的几乎所有事情(如拉取镜像、运行容器、构建镜像等),甚至更多(如原生支持 Pod),但它们的底层架构和安全理念截然不同。
Podman 与 Docker 的核心区别
截至 2026 年,两者的主要区别可以归纳为以下几个维度:
1. 架构设计:无守护进程 vs 守护进程
这是两者最根本的区别。
-
Docker (Client-Server 架构):
-
依赖一个长期运行的后台进程
dockerd(Docker Daemon)。 -
所有的容器操作(
docker run,docker build等)都通过 CLI 客户端发送 API 请求给守护进程,由守护进程统一调度。 -
缺点:守护进程是单点故障。如果
dockerd崩溃,所有由其管理的容器都会失控;且守护进程通常需要 Root 权限,存在安全风险。
-
-
Podman (Fork-Exec 架构):
-
无守护进程 (Daemonless)。
-
每个容器都是一个独立的进程,由 Podman 直接调用底层运行时(如
runc或crun)启动,类似于传统的 Linux 进程管理。 -
优点:没有单点故障,某个容器崩溃不会影响其他容器;架构更简单,更符合 Unix“一切皆进程”的哲学。
-
2. 安全性:Rootless 模式
-
Docker:
-
传统上需要 Root 权限运行守护进程。虽然新版 Docker 也支持 Rootless 模式,但配置相对复杂,且部分功能受限。
-
如果攻击者突破了容器隔离,可能获得宿主机的 Root 权限。
-
-
Podman:
-
原生支持 Rootless(非 Root 用户运行)。普通用户可以直接运行容器,无需任何特殊配置。
-
利用 Linux 的 User Namespaces 技术,将容器内的 Root 用户映射为宿主机上的普通用户,极大降低了安全风险。这在多租户环境或对安全要求高的企业场景中极具优势。
-
3. Pod 的概念与 Kubernetes 兼容性
-
Docker:
-
原生只支持单个容器。如果要运行一组紧密耦合的容器(即一个 Pod),必须依赖 Docker Compose 或外部编排工具。
-
与 Kubernetes 的抽象模型(Pod)不完全一致。
-
-
Podman:
-
原生支持 Pod。你可以像 Kubernetes 一样,将多个容器分组到一个 Pod 中,共享网络和存储命名空间。
-
K8s 友好:Podman 可以直接生成 Kubernetes YAML 文件 (
podman generate kube),也可以直接从 K8s YAML 文件启动 Pod (podman play kube)。这使得从本地开发到 K8s 集群部署的迁移非常顺畅。
-
4. 命令兼容性
-
高度兼容:Podman 的命令行接口 (CLI) 设计与 Docker 几乎完全一致。
-
你通常只需要设置一个别名:
alias docker=podman,然后继续使用熟悉的docker run,docker ps,docker images等命令,实际上执行的是 Podman。 -
大多数脚本和教程无需修改即可在 Podman 上运行。
-
5. 镜像构建与管理
-
Docker:使用
docker build,依赖守护进程上下文。 -
Podman:使用
podman build(基于 Buildah 项目)。它可以在无守护进程的情况下构建镜像,支持更灵活的构建策略(如在容器内构建容器)。 -
镜像仓库:两者都兼容 Docker Hub 和其他 OCI 注册表。Podman 默认配置可能更倾向于 Quay.io (Red Hat 旗下的仓库),但完全可以配置使用 Docker Hub。
对比总结表
|
特性 |
Docker |
Podman |
|
架构 |
Client-Server (依赖 |
无守护进程 (Fork-Exec 模型) |
|
单点故障 |
有 (守护进程挂掉影响所有容器) |
无 (容器相互独立) |
|
Root 权限 |
默认需要 Root (Rootless 需配置) |
原生支持 Rootless (默认安全) |
|
Pod 支持 |
不支持 (需 Docker Compose) |
原生支持 (类似 Kubernetes) |
|
K8s 兼容性 |
一般 (需转换) |
极高 (可直接生成/播放 K8s YAML) |
|
Systemd 集成 |
较复杂 (需额外配置生成 service 文件) |
原生集成 ( |
|
生态工具 |
极其丰富 (Swarm, Desktop, 众多插件) |
快速增长 (Podman Desktop, Buildah, Skopeo) |
|
适用场景 |
个人开发、遗留系统、强依赖 Docker 生态 |
生产环境、高安全需求、K8s 工作流、RHEL/CentOS/Fedora |
该如何选择?
选择 Docker,如果:
-
你是初学者,希望找到最多的教程和社区支持。
-
你的团队重度依赖 Docker Swarm 或特定的 Docker 专属插件。
-
你需要使用 Docker Desktop 在非 Linux 系统(macOS/Windows)上获得最无缝的体验(尽管 Podman Desktop 正在迅速追赶,但 Docker Desktop 目前仍是最成熟的跨平台方案)。
-
现有的 CI/CD 流水线深度绑定 Docker 守护进程特性。
选择 Podman,如果:
-
安全性是你的首要考虑(特别是在生产环境)。
-
你正在使用 Red Hat 系列发行版 (RHEL, CentOS, Fedora),Podman 是默认且首选的容器工具。
-
你的最终部署目标是 Kubernetes,希望本地开发与线上环境保持一致(Pod 概念)。
-
你讨厌守护进程带来的资源占用和单点故障风险。
-
你需要将容器作为 systemd 服务 轻松管理(Podman 生成 systemd 单元文件非常方便)。
趋势展望 (2026): 随着云原生技术的发展,Podman 在企业级生产环境中的采纳率持续上升,尤其是在对安全和合规性要求严格的金融、政府和大中型互联网企业中。同时,Podman Desktop 的成熟使得它在开发者桌面端的体验已非常接近 Docker Desktop。对于新项目,尤其是基于 Kubernetes 的项目,Podman 往往被认为是更“现代”和“面向未来”的选择。
更多推荐
所有评论(0)