一切的前提是安装了支持 Docker/LXC 的内核 本文使用的设备为小米 8SE,如果你跟我是同一个型号,可以使用我发布的内核 (适用于 MIUI12/12.5,安卓 10)
我采用的方案是在 chroot 容器中启动 Docker 与 LXC,可以省去很多不必要的麻烦,配置起来更简单,且几乎没有性能损失

安装 Linux Deploy
Github下载
需要 root 权限
配置 Ubuntu 容器
| 选项 | 内容 |
|---|---|
| 发行版 | Ubuntu |
| 发行版 GNU/Linux 版本 | jammy(22.04) (推荐) |
| 源地址 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ |
| 安装类型 | 镜像文件 |
| 镜像大小 (MB) | 8192+ (推荐) |
| 用户名 | root |
| 本地化 | zh_CN.UTF-8 |
| DNS | 223.5.5.5 (推荐) |
| 初始化 | 启用 |
| 初始化系统 | sysv |
| 挂载 | 启用 |
| 挂载点列表 | 见下文 |
| SSH | 启用 |
| SSH 设置→端口 | 1024+ (推荐) |

挂载点列表
先挂载 cgroup
在手机终端执行,看输出中的挂载点

把输出中的挂载点全部挂载上,注意顺序:先挂载/sys/fs/cgroup目录下的,再挂载/dev目录下的,比如我这里就是

启动
返回主界面,点击右上角安装,看到 <<< deploy 后点击启动

使用任意 ssh 工具连接到容器 ssh root@IP -p端口
例如 ssh root@127.0.0.1 -p8023
安装 docker
添加仓库和公钥
安装 docker-ce
启动 docker
挂载 cgroup,每次重启手机,都需要在手机终端运行 (注意是手机终端,不是 chroot 容器终端),每次开机执行一次即可。如果是我发布的内核,安装过kernel-fix模块后不需要这一步
启动 dockerd,每次重启 chroot 容器都需要再次运行
另开一个终端,ssh 连接到容器
看到 Hello from Docker! 和一大串话就是安装好了

注意 Docker 容器要上网就必须使用 host 模式,在启动命令里添加 --net=host
配置 dockerd 自启动
重启 chroot 容器后可以直接使用 docker,不需要再启动 dockerd
安装 LXC
安装
配置 LXC
挂载 cgroup,每次重启手机,都需要在手机终端运行 (注意是手机终端,不是 chroot 容器终端),每次开机执行一次即可。如果是我发布的内核,安装过kernel-fix模块后不需要这一步
创建 LXC 容器
以 Ubuntu 22.04 为例,依次输入 ubuntu jammy arm64
改密码
输入密码 回车
再次输入密码 回车
启动 LXC 容器
进入 LXC 容器
输入用户名 root 回车
输入密码 回车
按 Ctrl + a + q 退出容器
改 DNS 必改!!
换源
改密码
输入密码 回车
再次输入密码 回车