Skip to content

linkease/docker-for-android

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

docker-for-android

目前暂时支持 arm64/aarch64 架构的部分 Android 设备。 本项目优先支持 EasePi-A2

本项目使用原生 Docker 二进制

使用原生 Docker 二进制,没对 Docker 二进制进行任何修改,安全可靠。 目前的下载地址为:

其他 Android 系统支持可以讨论:

版本与发布

  • 当前版本:查看版本
  • 源服务器(原始):https://fw.koolcenter.com/binary/docker-for-android
  • CDN(.txt 不缓存,始终最新):https://fw.kspeeder.com/binary/docker-for-android

打包 arm64 二进制

在仓库根目录执行:

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 更新 arm64_bin

开发调试时,可以使用脚本从 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_PACKAGEARM64_SHA256
  • 从 CDN 下载 tar.gz(失败则回退到源服务器)
  • 校验 sha256
  • 解压到 docker/ 下,覆盖 docker/arm64_bin

在 Android 设备上部署

方法一:使用自动安装程序(推荐)

最简单的安装方式是使用我们提供的安装程序,它会自动从 CDN/服务器下载并安装所有必需的文件。 点击下载地址

也可以查看下面的编译步骤自动编译

前置条件

  1. Android 设备已获取 root 权限
  2. 已连接 adb
  3. 必须已挂载 ext4 格式的外置硬盘

快速安装

现在把安装软件下载到电脑上,再用 adb 推送到设备上:

  • adb connect IP:5555
  • adb root
  • adb push ./install-docker-arm64 /data/local/
  • adb shell

到 shell 里面运行:/data/local/install-docker-arm64

安装程序功能

安装程序会自动完成:

  1. 检测硬盘 - 检查 ext4 格式的外置硬盘
  2. 下载文件 - 从 CDN/服务器下载最新版本
    • 优先使用 CDN(https://fw.kspeeder.com/binary/docker-for-android
    • CDN 失败时自动切换到源服务器
    • 自动 SHA256 校验确保文件完整性
  3. 解压安装 - 解压到正确位置
  4. 自动部署 - 执行部署脚本,配置环境并启动服务
  5. 安装 DPanel - 自动部署容器管理面板

整个过程完全自动化,无需手动操作。

方法二:手动部署

前置条件

  1. Android 设备已获取 root 权限
  2. 已连接 adb,或者在设备上通过终端执行
  3. 必须已挂载 ext4 格式的外置硬盘(脚本检测不到硬盘会直接退出)

部署步骤

下面的教程的版本号请自行根据实际修改

  1. 构建 docker 发布包:
make build-release
  1. release/docker-28.0.1.10.tar.gz 推送到设备:
adb push release/docker-28.0.1.10.tar.gz /data/local/
  1. 解压到 /data/local/docker
adb shell
cd /data/local
tar -xzf docker-28.0.1.10.tar.gz
  1. 运行部署脚本:
cd /data/local/docker
sh deploy-in-android.sh

部署脚本功能

deploy-in-android.sh 会自动完成以下操作:

  1. 检测硬盘挂载点并设置 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
    • 如果未检测到硬盘,脚本会直接退出
  2. 配置环境变量

    • 只需更新 docker.env 中的 DISK_ROOT
    • 其他变量(DOCKER_DATA_ROOTDISK_CACHE)会自动派生
  3. 配置 kspeeder

    • 使用环境变量 ${DISK_CACHE}/Kspeeder 作为缓存路径
    • 缓存路径统一在 docker.env 中管理
  4. 启动 Docker 并部署 DPanel

    • 启动 Docker 服务
    • 等待 Docker 就绪(最多 60 秒)
    • 拉取并启动 DPanel 容器管理面板
    • DPanel 监听在 :8080 端口
    • DPanel 配置数据保存在 $DOCKER_DATA_ROOT/../Configs/DPanel

访问 DPanel

部署完成后,在浏览器中访问:

http://<Android设备IP>:8080

环境变量说明

所有环境变量在 docker.env 中统一管理,采用统一的硬盘根目录设计:

  • DISK_ROOT:硬盘根目录(例如:/mnt/media_rw/xxx),唯一需要设置的变量
  • DOCKER_DATA_ROOT:Docker 数据目录,自动派生${DISK_ROOT}/dockerd/docker
  • DISK_CACHE:缓存根目录,自动派生${DISK_ROOT}/Cache
    • kspeeder 缓存:${DISK_CACHE}/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 下,备份和迁移更方便

About

为 Android 底层提供原生的 Docker 能力。Android 系统必须支持 adb root 才行。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5