安卓运行lxc/docker方法(非虚拟机)
注意,必须root.没有root权限 无解。
你需要会用
#准备工作
1 MT管理器 https://www.coolapk.com/apk/bin.mt.plus
2 下载 秋秋 静态编译的 lxc文件,
原下载地址 (下载后不用改名)
点这里
备用地址 (下载以后把后缀名.zip 删掉)
点这里
#解压lxc
用mt管理器把静态编译的lxc压缩包 lxcnew.tar.gz文件复制到/data/lxc
打开mt管理器,点左上角 三条杠,
终端模拟器,如果是第一次使用,
等它初始化一下。
开始执行命令 解压 ,记得手机访问本网页,你可以直接复制代码
su
cd /data/lxc
tar -xvf lxcnew.tar.gz
#检测cgroup版本
分别执行以下命令
mount | grep cgroup2
mount | grep cgroup1
如果第 1 条命令有输出信息,你就是cgroup2
如果第 2 条命令有输出信息,你就是cgroup1
如果你是cgroup2版本,执行
echo "lxc.init.cmd = /sbin/init systemd.unified_cgroup_hierarchy" >>; /data/lxc/share/lxc/config/common.conf
如果你是cgroup2版本,执行
echo "lxc.init.cmd = /sbin/init systemd.unified_cgroup_hierarchy=0" >> /data/lxc/share/lxc/config/common.conf
#配置一下lxc的网络
sed -i 's/lxc\.net\.0\.type = empty/lxc.net.0.type = none/g' /data/lxc/etc/lxc/default.conf
#挂载cgroup
mount -t tmpfs -o mode=755 tmpfs /sys/fs/cgroup
mkdir -p /sys/fs/cgroup/devices
mount -t cgroup -o devices cgroup /sys/fs/cgroup/devices
mkdir -p /sys/fs/cgroup/systemd
mount -t cgroup cgroup -o none,name=systemd /sys/fs/cgroup/systemd
上面5行命令 每次启动都要执行,可以更换termux 处理,写入到.bashrc 的末尾
sudo mount -t tmpfs -o mode=755 tmpfs /sys/fs/cgroup && sudo mkdir -p /sys/fs/cgroup/devices && sudo mount -t cgroup -o devices cgroup /sys/fs/cgroup/devices && sudo mkdir -p /sys/fs/cgroup/systemd && sudo mount -t cgroup cgroup -o none,name=systemd /sys/fs/cgroup/systemd
sudo lxc-setup-cgroups
记得 termux 要安装 tsu pkg install tsu 否则没有sudo命令,同时要给termux root权限,不然sudo 也执行不了
#准备创建lxc
后面的命令都在termux里面执行,当然MT的终端 适当修改一下也可以
#下载镜像
我这里选择debian,不喜欢ubuntu
sudo /data/lxc/bin/lxc-create -t download -n debian -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images
依次输入 debian bookworm arm64
#启动
sudo /data/lxc/bin/lxc-start -n debian
如果提示 state "ABORTING" instead of "RUNNING"
sudo /data/lxc/bin/lxc-start -n debian --logfile=tmp.log --logpriority=DEBUG
sudo cat tmp.log 检查错误
sudo /data/lxc/bin/lxc-attach -n debian /bin/passwd root
日期 2023年07月21日
时间 01:44
by redblue(弗朗西斯科)
【 一 】 前期准备
( 1 )
mt管理器,进入手机目录/data,
新建 lxc 文件夹
下载 秋秋 静态编译的 lxc文件,
原下载地址 (下载后不用改名)
点这里
备用地址 (下载以后把后缀名.zip 删掉)
点这里
然后把 lxcnew.tar.gz文件复制到/data/lxc,
打开mt管理器,点左上角 三条杠,
终端模拟器,如果是第一次使用,
等它初始化一下。
开始执行命令
$ su
$ cd /data/lxc
$ tar -xvf lxcnew.tar.gz
( 2 ) ——检测cgroup版本
分别执行以下命令
$ mount | grep cgroup2
$ mount | grep cgroup1
如果第 1 条命令有输出信息,你就是cgroup2
如果第 2 条命令有输出信息,你就是cgroup1
如果你是cgroup1版本,执行 (执行1次即可,以后每次启动 无需再次执行)
$ echo "lxc.init.cmd = /sbin/init systemd.unified_cgroup_hierarchy" >>; /data/lxc/share/lxc/config/common.conf
如果你是cgroup2版本 执行 (执行1次即可,以后每次启动 无需再次执行)
$ echo "lxc.init.cmd = /sbin/init systemd.unified_cgroup_hierarchy=0" >> /data/lxc/share/lxc/config/common.conf
( 3 )
网络设置
( cgroup1 和cgroup2都要执行 )
( 共1条命令,只需要执行 1 次 )
$ sed -i 's/lxc.net.0.type = empty/lxc.net.0.type = none/g' /data/lxc/etc/lxc/default.conf
( 4 )
挂载cgroup ( 可能需要每次都执行,如果在termux里可以在每个命令前加sudo,放.bashrc里每次自动执行)
mount -t tmpfs -o mode=755 tmpfs /sys/fs/cgroup && mkdir -p /sys/fs/cgroup/devices && mount -t cgroup -o devices cgroup /sys/fs/cgroup/devices && mkdir -p /sys/fs/cgroup/systemd && mount -t cgroup cgroup -o none,name=systemd /sys/fs/cgroup/systemd
或者
建议直接去termux里,执行
$ pkg install root-repo
$ pkg install tsu lxc
$ sudo mount -t tmpfs -o mode=755 tmpfs /sys/fs/cgroup && sudo mkdir -p /sys/fs/cgroup/devices && sudo mount -t cgroup -o devices cgroup /sys/fs/cgroup/devices && sudo mkdir -p /sys/fs/cgroup/systemd && sudo mount -t cgroup cgroup -o none,name=systemd /sys/fs/cgroup/systemd
$ sudo lxc-setup-cgroups
【 二 】 创建和启动 lxc容器
接下来,你可以选择自己喜欢的app进行操作,
例如
mt管理器
juicessh
termius
termux
本地adb shell
远程adb
( 1 ) 配置环境
以mt管理器 为例,
打开mt管理器,点左上角 三条杠,
终端模拟器,如果是第一次使用,
等它初始化一下。
开始执行命令
$ su
$ cd /data/lxc
$ source env.sh
( 2 ) 创建和运行 lxc容器
创建lxc容器
$ lxc-create -t download -n ubuntu -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images
以 ubuntu 23.04 为例,依次输入
ubuntu
lunar
arm64
等它下载解压完
启动容器
lxc-start -n ubuntu
改密码
lxc-attach -n ubuntu /bin/passwd root
然后输入密码
再次输入密码
密码改好了!
停止容器
lxc-stop -n ubuntu
启动并进入容器
lxc-start -n ubuntu -F
输入用户名 root
输入密码 你改的密码
执行
apt update
发现网络有问题,失败
解决网络问题 ( 共3条命令 )
$ groupadd -g 3003 aid_inet
$ usermod -g aid_inet _apt
$ echo "nameserver 8.8.8.8" > /etc/resolv.conf
执行
apt update
发现成功了
【 三 】 ubuntu后续使用
( 1 ) 更换为清华大学源 可选
备份原镜像源
$ cp /etc/apt/sources.list /etc/apt/sources.list.bak
ubuntu 23.04更换清华大学源
共4条命令
$ echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ lunar main restricted universe multiverse" > /etc/apt/sources.list
$ echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ lunar-updates main restricted universe multiverse" >> /etc/apt/sources.list
$ echo "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ lunar-backports main restricted universe multiverse" >> /etc/apt/sources.list
$ echo "deb http://ports.ubuntu.com/ubuntu-ports/ lunar-security main restricted universe multiverse" >> /etc/apt/sources.list
( 2 ) ssh连接
$ apt install openssh-server
修改ssh配置文件,允许root用户的ssh连接,
$ apt install nano
$ nano /etc/ssh/sshd_config
找到这行
#PermitRootLogin prohibit-password
在它的下面添加1行
PermitRootLogin yes
保存并退出
Ctrl + o
Enter
Ctrl + x
重启ssh服务
$ systemctl restart ssh
( 3 ) 改时区 描述: 日期时间不对,需要改下时区
执行
date
发现日期时间不对
执行以下命令 ( 即设定时区 让它自动校正时间 )
sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
执行
date
发现时间自动校正了
【 四 】 lxc里的docker 运行
参考 安卓Lxc教程V9 的以下章节 :
【 六 】lxc里运行docker
【 五 】 常用命令
这里记录一些常用命令
( 1 )
lxc容器后台运行
lxc-start -n ubuntu -d
然后就可以ssh连接了
( 2 )
停止lxc容器
lxc-stop -n ubuntu
也可以这样停止容器
$ su
$ /data/lxc/bin/lxc-stop -n ubuntu
termux里 可以这样停止容器
sudo /data/lxc/bin/lxc-stop -n ubuntu