Android系统开启Docker支持

Android系统开启Docker支持

1. 基础问题

1.1 为什么Android上不能直接使用Docker?

原因是docker依赖的Linux的内核特性,例如:cgroup、namespace等,在Android内核中默认没有开启

1.2 如何在Android上开启docker支持?

需要修改kernel,将kernel配置成支持docker的kernel,才可以在Android上原生运行docker.

1.3 如何检查支持docker功能的内核配置情况?

需要在Android设备上安装Termux软件包,使用moby的check-config脚本进行内核配置项检查

 

2. Moby check脚本

2.1 Moby check脚本前置使用条件

1. Android设备上安装termux软件包,并初始化

2. 下载Moby脚本用于检查缺少的内核功能

2.2 Moby check脚本下载地址

链接:https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh

具体执行,可参考如下步骤:

    #需要root权限执行
    wget https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh
    chmod +x check-config.sh
    sed -i '1s_.*_#!/data/data/com.termux/files/usr/bin/bash_' check-config.sh
    sudo ./check-config.sh

2.3 参数CONFIG配置说明

Generally Necessary下的项目是一定要开启的参数

Optional Features为可开可不开

zfs项不用处理 ----原因:到6.1.9版本,仍未进入Linux主线内核,所以这些参数是开不了的

 

3. 修改内核

    进入menuconfig

    对照Moby脚本显示缺少的CONFIG,将其逐一开启。

    需要修改源码目录下的kernel/Makefile文件。具体参考如下:---在我们当前项目代码里需要验证

    diff --git a/kernel/Makefile b/kernel/Makefile
    index d5c1115..2dea801 100644
    --- a/kernel/Makefile
    +++ b/kernel/Makefile
    @@ -121,7 +121,7 @@ $(obj)/configs.o: $(obj)/config_data.h
    # config_data.h contains the same information as ikconfig.h but gzipped.
    # Info from config_data can be extracted from /proc/config*
    targets += config_data.gz
    -$(obj)/config_data.gz: arch/arm64/configs/lavender_stock-defconfig FORCE
    +$(obj)/config_data.gz: $(KCONFIG_CONFIG) FORCE
        $(call if_changed,gzip)
     
        filechk_ikconfiggz = (echo "static const char kernel_config_data[] __used = MAGIC_START"; cat $< | scripts/basic/bin2c; echo "MAGIC_END;")

    4. 需要修改内核源码文件夹里的/net/netfilter/xt_qtaguid.c文件---在我们当前项目代码里需要验证

    --- orig/net/netfilter/xt_qtaguid.c     2020-05-12 12:13:14.000000000 +0300
    +++ my/net/netfilter/xt_qtaguid.c       2019-09-15 23:56:45.000000000 +0300
    @@ -737,7 +737,7 @@
    {
            struct proc_iface_stat_fmt_info *p = m->private;
            struct iface_stat *iface_entry;
    -       struct rtnl_link_stats64 dev_stats, *stats;
    +       struct rtnl_link_stats64 *stats;
            struct rtnl_link_stats64 no_dev_stats = {0};  
    @@ -745,13 +745,8 @@
            current->pid, current->tgid, from_kuid(&init_user_ns, current_fsuid()));
            iface_entry = list_entry(v, struct iface_stat, list);
    +       stats = &no_dev_stats;
    -       if (iface_entry->active) {
    -               stats = dev_get_stats(iface_entry->net_dev,
    -                                     &dev_stats);
    -       } else {
    -               stats = &no_dev_stats;
    -       }
            /*
             * If the meaning of the data changes, then update the fmtX
             * string.

 

4. Android系统启用Docker步骤

第1步:设备安装Termux软件包,并初始化

第2步:下载Moby检查脚本

第3步:运行Moby检查脚本,检查内核缺失项配置参数,查看CONFIG状态,显示missing的配置项,即为缺失的功能

第4步:修改内核配置文件,开启缺失配置

第5步:修改内核文件

第6步:编译内核

第7步: 将新内核刷到设备里,重启开机

第8步:运行Moby检查脚本,查看CONFIG状态,若CONFIG项没有missing,则表示当前kernel已支持docker, 若仍有显示missing的项,则需重复第4步开始的操作,直至所有CONFIG项没有missing.

第9步:安装docker与docker compose

第10步:启用docker daemon


原文链接:https://blog.csdn.net/netwalk/article/details/140210252

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android平板上安装Docker是可行的,但需要一些额外的步骤和条件。以下是一般的安装过程: 1. 确认设备支持:首先,确保你的Android平板具备以下条件: - 设备已经root(获取超级用户权限)。 - 设备的内核版本支持Docker。 - 设备具备足够的存储空间和处理能力来运行Docker容器。 2. 安装Termux:Termux是一个在Android上运行Linux环境的终端模拟器。你可以在Google Play商店中下载并安装Termux应用。 3. 安装必要的软件包:打开Termux应用后,运行以下命令来安装必要的软件包: ``` pkg install curl wget git proot ``` 4. 下载并安装Linux发行版:在Termux中运行以下命令来下载并安装Linux发行版(如Ubuntu): ``` curl https://raw.githubusercontent.com/AndronixApp/AndronixOrigin/master/Installer/Ubuntu20/ubuntu20.sh | bash ``` 5. 启动Linux环境:运行以下命令来启动Linux环境: ``` ./start-ubuntu20.sh ``` 6. 安装Docker:在Linux环境中,运行以下命令来安装Docker: ``` curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh ``` 7. 配置Docker权限:为了在非root用户下使用Docker,运行以下命令来添加当前用户到docker用户组: ``` sudo usermod -aG docker $USER ``` 8. 重新登录:退出Linux环境并重新登录,以使用户组更改生效。 9. 验证安装:在Termux中运行以下命令来验证Docker是否成功安装: ``` docker run hello-world ``` 请注意,这只是一般的安装过程,具体步骤可能因设备和操作系统版本而有所不同。此外,安装Docker可能会对设备性能和存储空间产生一定影响,请确保你的设备满足要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值