安卓运行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管理器,点左上角 三条杠, 终端模拟器,如果是第一次使用, 等它初始化一下。 开始执行命令 解压 ,记得手机访问本网页,你可以直接复制代码

1
2
3
su
cd /data/lxc
tar -xvf lxcnew.tar.gz

检测cgroup版本

分别执行以下命令

1
2
mount | grep cgroup2 
mount | grep cgroup1

如果第 1 条命令有输出信息,你就是cgroup2
如果第 2 条命令有输出信息,你就是cgroup1
如果你是cgroup2版本,执行

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

配置一下lxc的网络

1
sed -i 's/lxc\.net\.0\.type = empty/lxc.net.0.type = none/g' /data/lxc/etc/lxc/default.conf

挂载cgroup

1
2
3
4
5
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 的末尾

1
2
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

1
sudo /data/lxc/bin/lxc-create -t download -n debian -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images

依次输入 debian bookworm arm64

启动

1
2

sudo /data/lxc/bin/lxc-start -n debian

如果提示 state “ABORTING” instead of “RUNNING”

1
2
sudo /data/lxc/bin/lxc-start -n debian --logfile=tmp.log --logpriority=DEBUG
sudo cat tmp.log  检查错误
1
sudo /data/lxc/bin/lxc-attach -n debian /bin/passwd root

本文转自: https://purpleleaf.top/posts/%E5%AE%89%E5%8D%93lxc%E7%8B%AC%E7%AB%8B%E8%BF%90%E8%A1%8C%E6%95%99%E7%A8%8Bv3/

日期 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

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计