无需Root,安卓手机也能跑Linux容器
Podroid 是一个开源的 Android 应用项目
地址:https://github.com/ExTV/Podroid
全称:Rootless Podman for Android)
允许你在无需 root 的 Android 手机上运行 Linux 容器。
它通过 QEMU 虚拟化一个轻量级的 Alpine Linux 虚拟机,然后在里面提供完整的 Podman 容器运行时,并内置一个串口终端。
简单来说,它让你在手机上像在 Linux 服务器上一样拉取和运行任意 OCI 容器镜像(例如 Alpine、Nginx、Ubuntu 等),而且一切都打包在一个独立的 APK 里,无需安装 Termux 或其他额外工具。
主要特性:
容器支持:直接运行 podman run --rm -it alpine sh 等命令,支持任意 OCI 镜像。
内置终端:基于 Termux 的 TerminalView,提供完整的 xterm 仿真,支持 Ctrl、Alt、F1-F12、方向键等高级按键,还有粘性 Ctrl/Alt 切换、铃声震动反馈等优化。
持久化存储:使用 overlayfs + ext4 磁盘,重启手机后已安装的软件包、配置和拉取的容器镜像都不会丢失。
网络与端口转发:VM 通过 QEMU SLIRP(用户模式网络)上网,支持从虚拟机端口转发到 Android 本地(如把 VM 的 80 端口映射到手机的 8080),可在设置中添加持久转发规则。
完全自包含:只需安装一个 APK,无需 root、无需 Termux、无需额外 host 二进制文件。
前台服务:VM 以通知形式显示启动进度,即使后台也能保持运行。
其他:支持手动同步终端尺寸、键盘开关自动适配等移动端优化。
技术实现:
前端:Kotlin + Jetpack Compose UI。
虚拟化:嵌入式 QEMU(TCG 模式,无 KVM,仅 arm64),运行 aarch64 的 Alpine Linux。
容器引擎:Podman + crun + netavark + slirp4netns。
持久化:自定义 initramfs(init-podroid) + overlayfs。
终端桥接:通过 QEMU 串口(ttyAMA0)与 Android 的 TerminalView 通信。
网络:QEMU user-mode networking + QMP 动态控制端口转发。
与类似项目的区别相比需要 root、依赖 Termux 或其他复杂设置的方案,Podroid 的亮点在于完全自包含 + 良好持久化 + 移动端友好的终端和端口转发。
它不是简单的 Docker 兼容层,而是直接给你一个可用的 Podman 环境,适合想在手机上跑轻量 Linux 服务、开发测试或玩容器的人。
总体来说,这是一个很有趣且实用的项目,把 Linux 容器能力带到了普通 Android 手机上,适合对容器、虚拟化或 Linux on Android 感兴趣的用户。
致谢的项目也非常有参考价值。图8