文章目录
- [Docker Desktop 替代方案之OrbStack、podman、Rancher Desktop](#Docker Desktop 替代方案之OrbStack、podman、Rancher Desktop)
-
- [背景:Docker Desktop许可限制](#背景:Docker Desktop许可限制)
- OrbStack
-
- 无缝迁移现有Docker环境
- [安装 OrbStack](#安装 OrbStack)
- Podman
-
- 架构差异
- [Podman 在 macOS 上的使用](#Podman 在 macOS 上的使用)
- [**Containerd + nerdctl**](#Containerd + nerdctl)
-
- 容器技术栈的层次关系
- [Docker 与 Containerd 的关系](#Docker 与 Containerd 的关系)
- [macOS 不能直接运行 containerd](#macOS 不能直接运行 containerd)
- [mac 下 containerd 与 Lima方案](#mac 下 containerd 与 Lima方案)
- [Podman vs Lima vs Docker Desktop 对比](#Podman vs Lima vs Docker Desktop 对比)
- [Podman vs Lima 的实际区别](#Podman vs Lima 的实际区别)
-
- [Lima 适合的场景](#Lima 适合的场景)
- [Podman 适合的场景](#Podman 适合的场景)
- 它们是完全独立的系统!
- [**Rancher Desktop、Podman Desktop分工策略**](#Rancher Desktop、Podman Desktop分工策略)
- [什么是Rancher Desktop](#什么是Rancher Desktop)
-
- [**与 Docker Desktop 相比如何?Rancher Desktop 是不是要取代 Docker Desktop?**](#与 Docker Desktop 相比如何?Rancher Desktop 是不是要取代 Docker Desktop?)
- mac下安装与启动
Docker Desktop 替代方案之OrbStack、podman、Rancher Desktop
背景:Docker Desktop许可限制
-
由 Docker 公司开发
-
提供完整的 Docker 生态体验(Docker Engine、Docker Compose、Kubernetes 等)
-
许可限制:大型企业(员工超过 250 人或年收入超过 1000 万美元)需要付费订阅
OrbStack
官网:https://orbstack.dev/
github:https://github.com/orbstack/orbstack
OrbStack是一种轻量级解决方案,可以在macOS上高效运行容器和Linux机器,是Docker Desktop的出色替代方案
OrbStack 是一个现代化的开发环境容器化平台,专为开发者和技术团队设计,旨在提供比传统解决方案更快速、更轻量、更易用的容器和虚拟机管理体验。它最初是针对 macOS 平台开发的,旨在解决 Docker Desktop 在 Mac 上性能不佳和资源占用高的问题,但随着时间的推移,OrbStack 已经发展成为一个功能全面的开发环境管理工具。
与传统的 Docker 或虚拟机解决方案相比,OrbStack 采用了全新的架构设计,显著减少了系统资源占用,同时提供了更快的启动速度和更流畅的使用体验。它不仅仅是一个 Docker 替代品,而是一个集成了容器、虚拟机和 Linux 开发环境的一体化解决方案。
使用场景:OrbStack适合macOS开发,Podman适合Linux生产环境 。
虽然它可能还不具备 Docker Desktop 所有的企业级功能,但对于大多数开发场景,特别是 macOS 平台上的日常开发工作,OrbStack 已经能够提供卓越的体验。
OrbStack 主要有两个作用:替代 Docker Desktop、替代 Linux 虚拟机。
从 OrbStack 官网描述来看,很好、非常好:OrbStack 比 Docker Desktop 启动速度快、网络快、Rosetta x86 模拟、低 CPU 占用、低电量消耗。
推荐,macOS 平台上的日常开发工作使用~
🚀 性能优势
启动速度:比Docker Desktop快7倍,比Colima快10倍。
CPU使用:仅为Docker Desktop的1/250。
网络带宽:是Docker的10倍。
内存消耗:仅为Docker Desktop的1/10。
无缝迁移现有Docker环境
OrbStack提供自动迁移工具,可完美继承Docker Desktop的镜像、容器和配置:
bash
orb docker migrate # 自动检测并迁移Docker数据
迁移过程保留所有网络设置和卷数据,平均迁移时间不到30秒。
报错:
bash
% orb docker migrate
INFO[0000] Starting Docker Desktop
Docker Desktop is not installed
之前用过 Docker Desktop,但已经卸载了,说明要替换 Docker Desktop 应该先迁移再卸载
安装 OrbStack
OrbStack 的安装过程非常简单。对于 macOS 用户,可以通过以下几种方式安装:
官方网站下载:访问 OrbStack 官网下载最新的 DMG 安装包,拖拽安装即可。
Homebrew 安装:对于习惯使用包管理的用户,可以通过命令brew install orbstack进行安装。
安装完成后,OrbStack 会自动集成到系统中,不需要复杂的配置过程。首次启动时,它会引导用户完成一些基本设置,如网络权限授予和 Docker CLI 工具的安装。
Podman
官网:https://podman.io/
虽然"containers are Linux",但 Podman 也可以在 Mac 和 Windows 上运行,它 提供了一个原生的 podman CLI,并嵌入了一个 guest Linux 系统来启动您的 容器。这个 guest 被称为 Podman 机器,并通过 podman machine 命令进行管理。
- Podman 不依赖后台守护进程,直接以用户权限运行容器,减少安全风险。
- 兼容 Docker:Podman 支持 Docker 命令行接口(CLI),可以无缝迁移现有 Docker 工作流。
镜像格式完全兼容 ✅ 可以混用!
# Podman 构建的镜像可以用 Docker 运行
podman build -t myapp:latest .
podman save myapp:latest -o myapp.tar
docker load -i myapp.tar
docker run myapp:latest
# Docker 构建的镜像也可以用 Podman 运行
docker build -t myapp:latest .
docker save myapp:latest -o myapp.tar
podman load -i myapp.tar
podman run myapp:latest
架构差异
Docker:
用户 → Docker CLI → Docker Daemon (dockerd) → containerd → runc
(客户端) (需要root的后台进程)
Podman:
用户 → Podman CLI → fork/exec → runc
(直接执行,无守护进程)
Podman 在 macOS 上的使用
官方文档: https://desktop.podman.org.cn/docs/installation/macos-install
Podman 把 VM 管理藏得很好 用户感觉像在直接使用 Podman 但本质上还是在 Linux VM 里运行。
Podman Desktop------这款由Red Hat支持的开源容器管理工具,它正逐渐成为Docker Desktop的有力替代品!
Podman Desktop是一款开源的容器和Kubernetes管理GUI工具,基于Podman构建。与Docker Desktop不同,它不需要守护进程(daemon),采用无根(rootless)模式运行,提供了更安全的容器运行时环境。
如果您尚未安装 Podman 引擎,Homebrew 会在安装 Podman Desktop 应用程序的同时一并安装它。
安装
# brew upgrade;
# 方式 1: 使用 Homebrew(推荐)
brew install podman
# 方式 2: 安装 Podman Desktop(带 GUI)
brew install --cask podman-desktop
注意:在 macOS ARM64 平台上,您可能会在 创建 Podman machine 页面上收到 krunkit 二进制文件不可用的警告。要解决此警告,请手动安装 krunkit 或使用 GitHub 安装程序安装 Podman
推荐使用方案:使用 GitHub 安装程序安装 Podman 亲测 比[手动安装 krunkit] 好用。
就是说建议直接用GitHub 安装程序安装 Podman~ 不要用brew!
推荐做法
如果你在 macOS 上:
- 选择 OrbStack 作为主要的容器/VM 解决方案(轻量、快速)
- Podman 仅在需要测试 Podman 特定功能时使用
- 不要同时启动两者的 Docker socket 兼容层
个人总结:就是你要本地开发,简单使用OrbStack 就够用了,都没有必要安装podman 了。
Containerd + nerdctl
Containerd 是一个工业标准的容器运行时,专注于容器的生命周期管理。它原本是 Docker 的核心组件,后来被独立出来捐赠给 CNCF(云原生计算基金会)。
容器技术栈的层次关系
┌─────────────────────────────┐
│ Docker CLI / nerdctl │ ← 用户交互层(命令行工具)
├─────────────────────────────┤
│ Docker Engine / containerd│ ← 容器引擎层(管理容器)
├─────────────────────────────┤
│ containerd │ ← 容器运行时层(核心)
├─────────────────────────────┤
│ runc │ ← 底层运行时(直接操作容器)
├─────────────────────────────┤
│ Linux Kernel (cgroups等) │ ← 操作系统层
└─────────────────────────────┘
Docker 与 Containerd 的关系
-
以前: Docker = Docker CLI + Docker Engine + containerd + runc
-
现在: containerd 独立存在,Docker 调用它,Kubernetes 也直接调用它
containerd 负责:
✓ 镜像的拉取和存储
✓ 容器的创建、启动、停止
✓ 网络和存储的管理
✓ 监控和日志收集
✗ 不提供用户友好的 CLI(需要额外工具)
macOS 不能直接运行 containerd
容器的本质:
共享宿主机的 Linux 内核
使用 Linux 特有的技术:
- namespaces(命名空间隔离)
- cgroups(资源限制)
- chroot(文件系统隔离)
┌─────────────────────────────┐
│ Container A │ Container B │ ← 容器
├─────────────────────────────┤
│ containerd │ ← 容器运行时
├─────────────────────────────┤
│ Linux Kernel │ ← 必须是 Linux 内核!
└─────────────────────────────┘
macOS 用的是 Darwin/XNU 内核 ≠ Linux 内核
所以 containerd 无法直接在 macOS 运行
mac 下 containerd 与 Lima方案
官方资源
- GitHub: https://github.com/lima-vm/lima
- 文档: https://lima-vm.io/
- 模板库: https://github.com/lima-vm/lima/tree/master/examples
相关工具
- nerdctl: https://github.com/containerd/nerdctl
- Colima (Lima 简化版): https://github.com/abiosoft/colima
- Rancher Desktop (基于 Lima): https://rancherdesktop.io/
Lima 是一个在 macOS 上启动 Linux 虚拟机的工具,可自动实现文件共享和端口转发功能,类似于 Windows 的 WSL2。Lima 通过 QEMU 或 macOS 原生虚拟化框架创建轻量级 Linux 虚拟机,预装 containerd 容器运行时,支持无缝挂载 macOS 目录到虚拟机内,并自动转发网络端口。用户可以通过简单的命令行操作管理虚拟机和运行容器,同时支持自定义配置、多虚拟机管理和 Kubernetes 环境。
Lima 的核心优势在于完全免费、配置灵活、与 Linux 生产环境保持一致,特别适合需要在 macOS 上进行容器开发但不想使用付费 Docker Desktop 的开发者。
Lima 是专为 macOS/Windows 设计的工具,在 Linux 上完全没必要使用!
Lima = Linux virtual Machines
= macOS 上的 Linux 虚拟机管理器
= 专为容器开发优化
= 完全开源免费
# ===== Linux (Ubuntu) =====
# 直接安装,无需虚拟机
sudo apt install containerd
sudo nerdctl run nginx # 直接运行
# ===== macOS =====
# 方式 1: Lima(推荐)
brew install lima
limactl start # ← 启动 Linux VM
lima nerdctl run nginx # 在 VM 内运行
# 方式 2: Colima
brew install colima
colima start # ← 启动 Linux VM
nerdctl run nginx
# 方式 3: Docker Desktop
# 安装 Docker Desktop.app
# 后台自动运行 Linux VM
docker run nginx
# ===== Windows =====
# 方式 1: WSL2(推荐)
wsl --install Ubuntu # ← 安装 Linux 子系统
wsl
sudo apt install containerd # 在 WSL 内安装
sudo nerdctl run nginx
# 方式 2: Docker Desktop
# 后台使用 Hyper-V 或 WSL2
Podman vs Lima vs Docker Desktop 对比
三者在 macOS 上的本质都一样:
Docker Desktop:
macOS → Docker CLI → [隐藏的 Linux VM] → Docker Engine → 容器
Lima:
macOS → lima nerdctl → [明确的 Linux VM] → containerd → 容器
Podman:
macOS → podman CLI → [半隐藏的 Linux VM] → Podman → 容器
区别只在于:
• 虚拟化技术选择
• 用户界面封装程度
• 是否让用户感知到 VM 的存在
技术架构对比
所有方案的共同点:
macOS → [虚拟机层] → Linux → 容器运行时 → 容器
┌─────────────────────────────────────────────────────┐
│ macOS 宿主机 │
├─────────────────┬───────────────┬───────────────────┤
│ Docker Desktop │ Lima │ Podman │
├─────────────────┼───────────────┼───────────────────┤
│ HyperKit/VZ │ QEMU/VZ │ QEMU/AppleHV │ ← 虚拟化
├─────────────────┼───────────────┼───────────────────┤
│ Docker OS │ Ubuntu/Alpine │ Fedora CoreOS │ ← Guest OS
├─────────────────┼───────────────┼───────────────────┤
│ Docker Engine │ containerd │ Podman + crun │ ← 运行时
├─────────────────┼───────────────┼───────────────────┤
│ docker CLI │ nerdctl │ podman CLI │ ← 命令行
└─────────────────┴───────────────┴───────────────────┘
详细对比
| 特性 | Podman | Lima | Docker Desktop |
|---|---|---|---|
| 需要 VM | ✅ 是 (podman machine) | ✅ 是 (明确) | ✅ 是 (隐藏) |
| 虚拟化 | QEMU/HVF | QEMU/VZ | HyperKit/VZ |
| Guest OS | Fedora CoreOS | Ubuntu/Alpine 等 | Docker OS |
| 许可证 | 🟢 完全免费 | 🟢 完全免费 | 🔴 企业付费 |
| 守护进程 | ✅ 无守护进程 | ⚠️ 有 containerd | ⚠️ 有 dockerd |
| Rootless | 🟢 原生支持 | 🟡 需配置 | 🟡 需配置 |
| Pod 支持 | 🟢 原生 | 🟡 基础 | ❌ 无 |
| 命令兼容 | 🟢 Docker 兼容 | 🟢 Docker 兼容 | 🟢 Docker 原生 |
| GUI | ✅ Podman Desktop | ❌ 无 | ✅ 功能全面 |
Podman vs Lima 的实际区别
虽然本质都是 VM,但体验不同:
# ===== Podman 方式 =====
# 初始化(一次性)
podman machine init
podman machine start
# 使用(感觉像直接使用)
podman run nginx # ✅ 简洁
podman ps
podman build -t myapp .
# 文件路径自动处理
podman run -v $(pwd):/app nginx # ✅ macOS 路径自动映射
# ===== Lima 方式 =====
# 初始化(一次性)
limactl start
# 使用(明确知道在 VM 内)
lima nerdctl run nginx # ⚠️ 需要 lima 前缀
lima nerdctl ps
# 文件路径需要理解挂载
lima nerdctl run -v $(pwd):/app nginx # 依赖 Lima 的挂载配置
# ===== 对比总结 =====
Podman:
✓ 命令更自然(无需前缀)
✓ 感觉像原生工具
✓ 自动处理路径映射
✗ VM 管理相对不灵活
Lima:
✓ VM 管理更灵活(多模板、自定义配置)
✓ 可以选择不同的运行时
✓ 更透明(明确知道在用 VM)
✗ 需要 lima 前缀(除非配置别名)
选择依据:
Podman → 如果你习惯 Docker 命令和工作流
Lima → 如果你想要更多控制和自定义选项
选择 Podman 如果:
✅ 需要 rootless 容器
✅ 使用 Kubernetes(Pod 支持)
✅ 想要 Docker 兼容但不付费
✅ 需要从容器生成 K8s YAML
✅ 喜欢"无守护进程"理念
选择 Lima 如果:
✅ 需要灵活的多 VM 管理
✅ 想要完全自定义 Linux 环境
✅ 需要与生产 containerd 环境一致
✅ 想深入理解虚拟化和容器
✅ 需要不同的 Linux 发行版
选择 Docker Desktop 如果:
✅ 公司已付费
✅ 需要 GUI 和完整生态
✅ 团队都在用(统一工具)
✅ 需要快速上手
✅ 不想折腾配置
Lima 适合的场景
✅ 使用 Lima 当你需要:
1. 自定义虚拟机配置
├─ 选择不同的 Linux 发行版(Ubuntu/Alpine/Fedora)
├─ 精确控制 CPU/内存/磁盘
├─ 自定义挂载点和网络
└─ 安装特定版本的软件
2. 多虚拟机环境隔离
├─ 开发环境(dev VM)
├─ 测试环境(test VM)
├─ 生产模拟(prod VM)
└─ 不同项目独立 VM
3. 与生产环境保持一致
├─ 生产用 Ubuntu 22.04 → Lima 也用相同版本
├─ 生产用 containerd → Lima 也用 containerd
└─ 复现生产环境问题
4. 深度定制需求
├─ 预装特定软件栈
├─ 自定义系统配置
├─ 实验不同的容器运行时
└─ 需要完整的 Linux 环境
5. 学习和理解底层
├─ 理解虚拟化原理
├─ 学习 Linux 系统管理
└─ 了解容器底层机制
Podman 适合的场景
✅ 使用 Podman 当你需要:
1. 简单替代 Docker
├─ 命令几乎完全兼容
├─ docker run → podman run
├─ docker ps → podman ps
└─ 无需学习新命令
2. 快速上手容器
├─ 不关心底层虚拟机
├─ 只想运行容器
├─ 像 Docker 一样简单
└─ 自动管理虚拟机
3. Rootless 容器优先
├─ 更高的安全性
├─ 无需 root 权限
└─ 适合多租户环境
4. Kubernetes 兼容性
├─ 原生支持 Pod
├─ 生成 K8s YAML
└─ 与 K8s 工作流一致
5. 简化的工作流
├─ 不想配置虚拟机
├─ 专注应用开发
└─ 减少运维负担
总结: 当你决策困难时候,注意 Lima 和 Podman 可以同时安装,互不影响!
它们是完全独立的系统!
macOS 宿主机
├─ Podman
│ └─ ~/.local/share/containers/podman/
│ └─ podman-machine-default (VM)
│ └─ 独立的 Fedora CoreOS
│ └─ Podman 运行时
│
└─ Lima
└─ ~/.lima/
├─ default (VM)
├─ myproject (VM)
└─ dev (VM)
└─ 独立的 Ubuntu/Alpine
└─ containerd 运行时
完全不同的目录结构 ✅
完全不同的虚拟机 ✅
完全不同的网络配置 ✅
Rancher Desktop、Podman Desktop分工策略
Rancher Desktop (K8s 开发) ← 微服务、集群应用
↓
K3s Cluster
↓
kubectl / helm
Podman Desktop (容器测试) ← 单体容器、快速验证
↓
Rootless Containers
↓
podman / podman-compose
什么是Rancher Desktop
官网:https://rancherdesktop.io/
官方文档:https://docs.rancherdesktop.io/
Rancher 中文文档: https://docs.rancher.cn/
Rancher Desktop 是一款在桌面上提供容器和 Kubernetes 管理的应用。它适用于 Mac(包括 Intel 和 Apple Silicon)、Windows 和 Linux。
Rancher desktop是SUSE主导的,开源免费的,稳定成熟的docker desktop的替代方案,相比podman desktop,其提供的操作方式与docker desktop更为接近,学习成本更低。
想搭建K8S环境,使用Minikube的话,就得先搭建虚拟机、然后安装Linux、再安装Minikube才行。而使用Rancher Desktop的话你只需安装它即可,它将自动安装K8S环境。
Rancher Desktop是一款开源K8S管理工具,支持Windows、macOS和Linux,在桌面版K8S和容器管理具备强大功能。安装完成后,它会自动为你部署K8S环境,简便至极!
Rancher Desktop通过在用户的本地计算机上提供一个轻量级的Kubernetes集群,使得开发人员能够在与生产环境相似的环境中测试和开发应用程序。
注意:Rancher Desktop 不是桌面上的 Rancher。安装 Rancher Desktop 并不安装 Rancher,但你可以将 Rancher 作为一个工作负载来安装。Rancher Desktop 类似于 minikube、kind 或 Docker Desktop 等应用,其目标是拥有一个易于设置的本地 Kubernetes 环境来管理容器。
Rancher Desktop 基于 Electron 实现跨平台用户界面,封装了 nerdctl、kubectl、Helm、Docker CLI 等工具。 在 MacOS 和 Linux 上,Rancher Desktop 利用虚拟机运行 containerd 或 dockerd 和 Kubernetes。在 Windows 中使用的是 Windows Subsystem for Linux 2 (WSL2)。
Rancher Desktop 使用专门的 Rancher K3s 发行版。 K3s 是一个 CNCF 沙盒项目,它提供了一个轻量级的 Kubernetes 发行版,主要适用于边缘计算、物联网等场景。K3s 安装简单且非常轻量,不仅适用于生产环境,而且还可以作为本地开发平台在 Rancher Desktop 内运行。
与 Docker Desktop 相比如何?Rancher Desktop 是不是要取代 Docker Desktop?
我们开始开发 Rancher Desktop 的目的并不是要创建一个替代 Docker Desktop 的产品。相反,我们专注于改善本地运行 Kubernetes 的体验,而 Docker Desktop 专注于容器化应用程序。而且,Docker 多年来一直致力于 Docker Desktop,使其在容器化应用程序方面表现出色。
随着我们向 Rancher Desktop 中添加构建、推送和拉取镜像并运行容器等功能。Rancher Desktop 在功能方面开始与 Docker Desktop 重叠。
Rancher Desktop 是一个很好的解决方案,可以轻松地在本地工作站上建立本地 Kubernetes 环境,而且非常轻量(内置 K3s),非常适用于开发、学习和其他目的。使用 Rancher Desktop 运行 Kubernetes 的过程也非常简单,并且提供了其他开发环境所没有的功能,例如:任意切换 Kubernetes 版本来配置环境;切换你喜欢的容器运行时等。
mac下安装与启动
首先,你需要从官方网站下载Rancher Desktop安装包,下载完成后,只需双击安装包即可开始安装。首次启动K8s时,系统会从github自动拉取所需镜像,确保环境的顺畅运行
-
官网下载
https://rancherdesktop.io/ -
官方github下载:
https://github.com/rancher-sandbox/rancher-desktop/releases