termux-containers 教學:免 Root 在閒置 Android 手機運行 Linux 服務
闲置安卓手机跑 Docker?无需 Root,旧手机直接变服务器|termux-containers
termux-containers 可讓 Android 手機免 Root、無需 Docker Engine,透過 Termux 和 PRoot-Distro 運行部分兼容 OCI 鏡像的 Linux 服務。
闲置 Android 手机,除了塞抽屉里,还可以运行 Docker!
这是 @BHznJNs 同学在论坛带来的新玩具:termux-containers,原文:https://meta.appinn.net/t/topic/94920

termux-containers
这个叫 termux-containers 的开源项目,它让你能够像在 Linux 服务器上部署 Docker 服务一样,在 Android 手机上部署一些 Linux 应用,而且无需 Root 权限。
比如,在手机上运行一个 Nginx 镜像,托管网站!虽然没什么用,但很酷啊。
特性
- 不需要 Root 手机
- 不需要安装 Docker Engine
- 不需要常驻 Docker 守护进程
- 使用 YAML 文件管理多个服务
- 支持启动、停止、查看运行状态
- 支持挂载文件和目录,保存应用数据
工作原理
Android → Termux → PRoot-Distro → OCI 镜像 → Linux 应用
Termux 是一款 Android 上的终端模拟器和 Linux 环境,可以直接在手机上使用命令行工具。
PRoot-Distro 是 Termux 生态中的 Linux 环境管理工具,可以让 Android 手机在无需 Root 的情况下运行 Ubuntu、Debian 等 Linux 发行版,以及兼容的 OCI 容器镜像。
OCI 镜像 则是开放标准的容器镜像,如今 Docker Hub 上的大量 Docker 镜像都采用 OCI 兼容格式。
当然,它与真正的 Docker 仍然有区别:PRoot 不提供 Docker 那样的内核级容器隔离,也无法运行所有 Docker 镜像。
但对于一些轻量级服务来说,这已经很有吸引力了。
能干什么?
青小蛙觉得,最有意思的玩法就是:把闲置 Android 手机变成一台低功耗的小服务器。
除了上面提到的没什么用的网站,下面这个倒是不错:
运行 Cloudflare Tunnel
这是项目官方提供的另一个示例。
Cloudflare Tunnel 可以让手机主动连接 Cloudflare,从而让外部用户通过域名访问手机上的服务。相当于实现了内网穿透。
自托管项目
现在 AI 这么方便了,随便写点什么代码都非常容易,
- 运行家庭消息转发机器人
- Node.js 轻量级应用
- 简单的 Webhook 接收服务
- Aria2 / yt-dlp 等下载工具
甚至,可以在没有 NAS、小主机的情况下,使用安卓手机替代一部分 NAS 功能。
怎么干?
首先需要在 Android 手机上安装 Termux。
然后打开 Termux,执行:
pkg update pkg install git git clone https://github.com/BHznJNs/termux-containers ~/termux-containers cd ~/termux-containers bash install.sh
安装脚本会配置 Python、PRoot、PRoot-Distro 等依赖,并创建 termux-containers 命令。
第一步:创建一个容器配置(Nginx 为例)
安装完成后,编辑项目目录里的 containers.yaml:
nano ~/termux-containers/containers.yaml
填入下面的配置:
services:
web:
image: nginxinc/nginx-unprivileged:stable-alpine
enabled: true
volumes:
- type: directory
source: ./data/web
target: /usr/share/nginx/html
environment:
PORT: "8080"
第二步:放入一个网页
执行:
mkdir -p ~/termux-containers/data/web echo '<h1>Hello from Android!</h1>' > ~/termux-containers/data/web/index.html
这样就创建了一个简单的网页。
第三步:启动容器
执行:
termux-containers apply
工具会读取 YAML 配置,安装缺失的镜像,并尝试启动服务。
之后可以执行:
termux-containers status
查看服务状态。
还可以使用:
termux-containers stop web termux-containers start web
停止或者重新启动服务。
如果 Nginx 成功启动并监听 8080 端口,就可以在手机浏览器里访问:
http://127.0.0.1:8080
这个非常有意思,你能想象到一台随便拿着走的手机,托管着一个网页,连上网,就能访问。
这让青小蛙想起这个项目:有人用 Wi-Fi 灯泡改造了一个《禁书图书馆》
使用限制
它无法使用所有的 Docker 镜像,有几个限制:
- 需要 ARM64 架构
- 没有 Docker 式的端口映射。 PRoot 与 Termux 共享网络。
- 没有完整的容器安全隔离。 应当只运行可信镜像。
- 后台运行受 Android 限制。 手机休眠或系统清理后台时,服务可能中断。
青小蛙觉得
termux-containers 让闲置手机在服务器托管方面更加容易了。
那么有没有一种可能,将多台闲置手机都连接起来,组成一个手机服务器集群,甚至搞出一个手机版本的 k8s(Kubernetes,容器编排系统),统一管理这些手机上的容器服务。
然后,变身家用迷你数据中心。
想法还是挺酷的,也不知道有没有可能实现。
获取
原文:https://www.appinn.com/termux-containers/
相关阅读
- Firefox 官方小号扩展:帮你在同一个网站登录多个账号
- 微软确认 Windows 10 可以使用 WSL 容器(WSL Containers),支持GPU直通
- Windows 11 原生 Linux 容器正式发布,不再需要 Docker Desktop
- 10 款最新发现的免费小工具[260520]
- 一键保存全文到 Obsidian 以及本地快照、自动标注,适合新用户的简悦 Obsidian 配置库
©2021 青小蛙 for 小众软件 | 加入我们 | 投稿 | 订阅指南
3659b075e72a5b7b1b87ea74aa7932ff
点击这里留言、和原作者一起评论
來源:小眾軟件 · appinn.com