安卓设备挂载移动硬盘部署 Docker 实战指南
在嵌入式安卓设备(如开发板、机顶盒等)上部署 Docker 时,常面临内置存储空间不足的问题。通过挂载外部移动硬盘扩展存储是一种高效且低成本的解决方案。本文将详细介绍如何在 Root 过的 Android 设备上,通过挂载 EXT4 格式的移动硬盘来部署 Docker 环境。
方案概述
利用 Windows WSL 或 Linux 环境将移动硬盘格式化为 Linux 原生支持的 ext4 文件系统,挂载至 Android 系统,并将其配置为 Docker 的数据存储路径,以彻底解决跨文件系统的权限兼容性问题。
一、 存储介质准备
注意: Docker 容器运行依赖于遵循 POSIX 标准的特定文件系统权限管理。Android 默认支持的 FAT32 或 exFAT 无法满足要求,必须格式化为 ext4。
1. 格式化存储设备 (以 Windows WSL 为例)
- • 以管理员身份打开 PowerShell,执行:
wmic diskdrive list brief
- • 记下 DeviceID(例如
\\.\PHYSICALDRIVE1)。
- • 在 PowerShell 中执行(以裸设备模式挂载):
wsl --mount <DeviceID> --bare
- • 查看磁盘路径(通常为
/dev/sdX):lsblk
- • 执行格式化(警告:数据将清空):
sudo mkfs.ext4 /dev/sdX
- • 退出 WSL 后,在 PowerShell 执行:
wsl --unmount <DeviceID>
2. 挂载确认
将硬盘接入 Android 设备,通过 ADB Shell 确认挂载路径:
adb shell df -h
通常路径位于 /mnt/media_rw/{UUID}。
二、 建立 ADB 连接
确保 Android 设备已开启 “开发者选项” 并启用 “USB 调试”。
| | |
|---|
| Windows | | adb connect 192.168.x.x:5555 |
| Windows | | |
| macOS/Linux | | ./adb connect 192.168.x.x:5555 |
三、 Docker 服务部署
1. 获取 Root 权限
adb root
2. 确认/手动挂载路径
查看硬盘是否正确识别:
adb shell ls -lht /mnt/media_rw/
若未自动挂载,可手动执行:
adb shell mkdir -p /mnt/media_rw/usb_ext4adb shell mount -t ext4 /dev/block/sda1 /mnt/media_rw/usb_ext4
3. 执行安装脚本
使用内置脚本进行部署,脚本会自动配置环境变量并将 Docker Root 设在外置硬盘。
执行命令:
# 请将 <YOUR_DISK_PATH> 替换为实际挂载路径adb shell sh /data/local/docker/deploy-in-android.sh /mnt/media_rw/usb_ext4
脚本核心逻辑:
- • 目录构建:在硬盘上创建
opt/dockerd/docker 结构。 - • 软链绑定:修改
docker.env 中的 DISK_ROOT 环境变量。
四、 技术说明与常见问题
1. 为何必须使用 ext4?
Docker 容器内的应用(如 MySQL)依赖严格的 Linux 文件权限。NTFS 或 exFAT 在 Android 上的 FUSE 实现无法提供完整的权限映射,会导致容器启动失败。
2. 挂载路径排查
若脚本未能识别硬盘,请进入 Shell 手动排查:
adb shelldf -h # 查看挂载点mount | grep ext4 # 查看 ext4 设备
3. 供电稳定性提醒
重要: 机械硬盘启动电流较大。若出现硬盘反复掉线、异响或无法挂载,请务必使用 带独立供电的 USB Hub 或硬盘盒。