目前暂时支持 arm64/aarch64 架构的部分 Android 设备。 本项目优先支持 EasePi-A2
使用原生 Docker 二进制,没对 Docker 二进制进行任何修改,安全可靠。 目前的下载地址为:
其他 Android 系统支持可以讨论:
- 当前版本:查看版本
- 源服务器(原始):
https://fw.koolcenter.com/binary/docker-for-android - CDN(.txt 不缓存,始终最新):
https://fw.kspeeder.com/binary/docker-for-android
在仓库根目录执行:
make arm64
会将 docker/arm64_bin 打包为 release/docker-for-android-bin-28.0.1.10-arm64.tar.gz,并生成对应的 .sha256 校验文件。
生成 version.txt:
make version
或者一键构建:
make build-release
version.txt 中会包含版本号与 arm64/x86_64 包名与 sha256,用于脚本在 CDN 上获取并校验下载。
开发调试时,可以使用脚本从 CDN 获取 version.txt,并根据其中的信息下载并覆盖 docker/arm64_bin:
scripts/update_arm64_bin.sh
可通过环境变量覆盖默认端点:
CDN_URL=https://fw.kspeeder.com/binary/docker-for-android \
ORIGIN_SERVER_URL=https://fw.koolcenter.com/binary/docker-for-android \
scripts/update_arm64_bin.sh
脚本会:
- 从 CDN 下载
version.txt(.txt 不被 CDN 缓存,始终最新) - 解析
ARM64_PACKAGE与ARM64_SHA256 - 从 CDN 下载 tar.gz(失败则回退到源服务器)
- 校验 sha256
- 解压到
docker/下,覆盖docker/arm64_bin
最简单的安装方式是使用我们提供的安装程序,它会自动从 CDN/服务器下载并安装所有必需的文件。 点击下载地址
也可以查看下面的编译步骤自动编译
- Android 设备已获取 root 权限
- 已连接 adb
- 必须已挂载 ext4 格式的外置硬盘
现在把安装软件下载到电脑上,再用 adb 推送到设备上:
- adb connect IP:5555
- adb root
- adb push ./install-docker-arm64 /data/local/
- adb shell
到 shell 里面运行:/data/local/install-docker-arm64
安装程序会自动完成:
- 检测硬盘 - 检查 ext4 格式的外置硬盘
- 下载文件 - 从 CDN/服务器下载最新版本
- 优先使用 CDN(
https://fw.kspeeder.com/binary/docker-for-android) - CDN 失败时自动切换到源服务器
- 自动 SHA256 校验确保文件完整性
- 优先使用 CDN(
- 解压安装 - 解压到正确位置
- 自动部署 - 执行部署脚本,配置环境并启动服务
- 安装 DPanel - 自动部署容器管理面板
整个过程完全自动化,无需手动操作。
- Android 设备已获取 root 权限
- 已连接 adb,或者在设备上通过终端执行
- 必须已挂载 ext4 格式的外置硬盘(脚本检测不到硬盘会直接退出)
下面的教程的版本号请自行根据实际修改
- 构建 docker 发布包:
make build-release- 将
release/docker-28.0.1.10.tar.gz推送到设备:
adb push release/docker-28.0.1.10.tar.gz /data/local/- 解压到
/data/local/docker:
adb shell
cd /data/local
tar -xzf docker-28.0.1.10.tar.gz- 运行部署脚本:
cd /data/local/docker
sh deploy-in-android.shdeploy-in-android.sh 会自动完成以下操作:
-
检测硬盘挂载点并设置 DISK_ROOT
- 自动检测 ext4 格式的外置硬盘(
/dev/block/vold/public:259,1) - 设置硬盘根目录
DISK_ROOT(例如:/mnt/media_rw/xxx) - 创建目录结构:
- Docker 数据:
$DISK_ROOT/dockerd/docker - 缓存目录:
$DISK_ROOT/Cache/Kspeeder - DPanel 配置:
$DISK_ROOT/Configs/DPanel
- Docker 数据:
- 如果未检测到硬盘,脚本会直接退出
- 自动检测 ext4 格式的外置硬盘(
-
配置环境变量
- 只需更新
docker.env中的DISK_ROOT - 其他变量(
DOCKER_DATA_ROOT、DISK_CACHE)会自动派生
- 只需更新
-
配置 kspeeder
- 使用环境变量
${DISK_CACHE}/Kspeeder作为缓存路径 - 缓存路径统一在
docker.env中管理
- 使用环境变量
-
启动 Docker 并部署 DPanel
- 启动 Docker 服务
- 等待 Docker 就绪(最多 60 秒)
- 拉取并启动 DPanel 容器管理面板
- DPanel 监听在
:8080端口 - DPanel 配置数据保存在
$DOCKER_DATA_ROOT/../Configs/DPanel
部署完成后,在浏览器中访问:
http://<Android设备IP>:8080
所有环境变量在 docker.env 中统一管理,采用统一的硬盘根目录设计:
DISK_ROOT:硬盘根目录(例如:/mnt/media_rw/xxx),唯一需要设置的变量DOCKER_DATA_ROOT:Docker 数据目录,自动派生为${DISK_ROOT}/dockerd/dockerDISK_CACHE:缓存根目录,自动派生为${DISK_ROOT}/Cache- kspeeder 缓存:
${DISK_CACHE}/Kspeeder
- kspeeder 缓存:
DOCKER_ROOT:Docker 安装根目录(/data/local/docker)DOCKER_HOST:Docker socket 路径HOME:Docker 运行时的 HOME 目录
只需设置 DISK_ROOT,其他路径自动派生:
# 在 docker.env 中
export DISK_ROOT=/mnt/media_rw/xxx
export DOCKER_DATA_ROOT=${DISK_ROOT}/dockerd/docker # 自动派生
export DISK_CACHE=${DISK_ROOT}/Cache # 自动派生实际目录结构:
DISK_ROOT=/mnt/media_rw/xxx
├── dockerd/
│ └── docker/ → DOCKER_DATA_ROOT (Docker 数据)
├── Cache/
│ └── Kspeeder/ → kspeeder 缓存
└── Configs/
└── DPanel/ → DPanel 配置目录
这种设计的优势:
- 极简配置:只需设置一个
DISK_ROOT变量 - 自动派生:所有路径在 shell 中自动展开
- 统一管理:所有软件都延续这个硬盘位置,路径统一
- 便于迁移:整个系统的数据都在
DISK_ROOT下,备份和迁移更方便