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. 修改内核

  1. 进入menuconfig

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

  3. 需要修改源码目录下的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/866661.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么英智智能宝能让律师工作事半功倍

大语言模型能够极大提高人们的知识理解能力和知识服务能力&#xff0c;法律服务是典型的知识服务领域&#xff0c;据悉律师有38%的任务都是重复性工作&#xff0c;这些任务有潜力被大模型替代。 但在法律行业中的高度专业且复杂的问题时&#xff0c;通用型大模型的回答虽能提供…

CentOS 离线安装部署 MySQL 8详细教程

1、简介 MySQL是一个流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它基于SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;进行操作。MySQL最初由瑞典的MySQL AB公司开发&#xff0c;后来被Sun Microsystems公司…

Go 语言 Map(集合)

Go 语言 Map(集合) Map 是 Go 语言中一种非常重要的数据结构,它用于存储键值对。在 Go 中,Map 是一种无序的键值对的集合,其中每个键都是唯一的,而值则可以是任何类型。Map 是 Go 语言的内置类型,使用起来非常方便,同时也是许多 Go 程序中不可或缺的一部分。 Map 的声明…

电子元器件基础知识总结

1.0 电阻 电阻的定义&#xff1a;导体对电流的阻碍作用称之为电阻【每一种导体都有内阻的存在】 闭合的电路中电子的移动输出有多快&#xff1f;电子在导体中的移动速度是很慢的 【铜线中电流的移动速度】 电子受到原子核的束缚&#xff0c;移动的速度很慢&#xff0c;在电压足…

4面体空间5点结构种类与占比

在30个点的4面体中取5个点&#xff0c;有30*29*28*27*26/(5*4*3*2)142506种取法&#xff0c; 这里要求5个点必须是直链或支链。共有496个组合符合要求&#xff0c;按平移对称性可分成181个不同的结构 结构 数量 结构 数量 结构 数量 结构 数量 结构 数量 结构 数量 …

Linux 干货:新手村全攻略,老手也不容错过

以下是一篇详细的关于Linux系统的文章&#xff0c;涵盖了基础概念、常用命令、系统管理、网络配置、安全措施等多个方面&#xff0c;旨在提供全面的Linux知识。希望这些干货能对你有所帮助。 掌握Linux&#xff1a;从基础到进阶 Linux是一种开源的操作系统&#xff0c;广泛应用…

python3 imwrite 中文路径不成功解决方法

filename 中文路径 #cv2.imwrite(filename, frame) cv2.imencode(.jpg, frame)[1].tofile(filename)

Harbor:打造docker私有镜像库

part 1. Harbor概览 harbor&#xff1a;我们的使命是成为 Kubernetes 值得信赖的云原生存储库 为什么要使用Harbor? Harbor是VMware公司开源的企业级容器镜像仓库管理平台,它提供了比基本Docker Registry更丰富的功能&#xff0c;特别适合企业环境使用。提供了镜像存储、签名…

【TS】TypeScript 联合类型详解:解锁更灵活的类型系统

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 TypeScript 联合类型详解&#xff1a;解锁更灵活的类型系统一、联合类型的定义二…

【深海王国】小学生都能玩的语音模块?ASRPRO打造你的第一个智能语音助手(6)

Hi~ (o^^o)♪, 各位深海王国的同志们&#xff0c;早上下午晚上凌晨好呀~ 辛勤工作的你今天也辛苦啦(/≧ω) 今天大都督继续为大家带来系列——小学生都能玩的语音模块&#xff0c;帮你一周内快速学会语音模块的使用方式&#xff0c;打造一个可用于智能家居、物联网领域的语音助…

基于SpringBoot的就业信息管理系统

你好&#xff0c;我是计算机学姐码农小野&#xff01;如果你对就业信息管理系统感兴趣或有相关需求&#xff0c;欢迎私信联系我。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; SpringBootMySql 工具&#xff1a; MyEclipse、Tomcat 系统展示…

【滑动窗口】个人练习-Leetcode-992. Subarrays with K Different Integers

题目链接&#xff1a;https://leetcode.cn/problems/subarrays-with-k-different-integers/description/ 题目大意&#xff1a;给一个数组nums[]&#xff0c;求【不同元素刚好为k个】的子列的个数。子列要求连续。 思路&#xff1a;主要是转换题意&#xff0c;可以先求【不同…

CAN 波特率配置详解

规范 CAN 协议经过 ISO 标准化后有两个标准 ISO11898标准和 IS011519-2标准。其中 ISO11898是针对通信速率为125Kbps ~1Mbps 的高速通信标准(闭环),而 IS011519-2是针对通信速率为 10kbps~125Kbps 低速通信标准(开环)。通常我们讨论的 CAN 波特率为闭环标准:125Kbps~1Mb…

电脑游戏录屏,3款实用软件推荐给你

在电竞游戏热潮席卷全球的今天&#xff0c;电脑游戏录屏早已不再是简单的画面捕捉&#xff0c;它成为了记录电竞风采、打造专属游戏记忆的重要手段。通过游戏录屏&#xff0c;我们可以定格游戏中的精彩瞬间&#xff0c;重温那些令人热血沸腾的电竞时刻。那么&#xff0c;在进行…

Prometheus + Grafana 监控系统搭建使用指南-mysqld_exporter 安装与配置

使用mysqld_exporter 实现Prometheus 监控Mysql 系列文章目录 Prometheus 的安装部署Grafana的安装部署Linux服务器接入Prometheus监控-Node Exporter 安装指南Prometheus 接入SpringBoot微服务监控Mysql 接入 Prometheus RocketMQ 接入Prometheus 监控ElasticSearch 接入 Pr…

Node.js实现一个文章生成器

前言 本文将从零开始&#xff0c;讲解如何使用Node.js来实现一个文章生成器 node里面有很多优秀的模块&#xff0c;现在我们就借助node的fs模块来操控文本&#xff0c;来实现我们想要的效果 效果展示 体验 fs 首先我们先创建一个json文件 里面放一些内容 接下来我们书写代码…

抖音本地生活服务商入驻要求中暗含哪些信息?入局要点都在里面了!

随着抖音外卖的正式开放&#xff0c;许多创业者对于做抖音本地生活服务商的意向愈发强烈&#xff0c;抖音本地生活服务商入驻要求及相关话题更是在多个创业者群内被翻来覆去地讨论&#xff0c;且多次刷屏。 而就抖音目前在本地生活市场的布局来看&#xff0c;其主要的重心还是…

js 随机生成整数

随机生成一个唯一的整数 id export const randomId () > { return Date.now() Math.floor(Math.random() * 10000) } 生成随机ID的方法 // 随机生成0 - 9999 export const randomId ()> { return Math.floor(Math.random() * 10000).toString() } // 随机生成0-999之…

Renderless 思想正在影响前端开发

本文由前端小伙伴方长_beezen 原创。欢迎大家踊跃投稿。 原文链接&#xff1a;https://juejin.cn/post/7385752495535472655 前言 截止到 2024 年&#xff0c;跨端应用开发所需要考虑的兼容性&#xff0c;已经涵盖了框架、平台和设备类型等多个方面&#xff0c;例如&#xff1…

开发在线教育项目-在线课程视频网站开发

用了哪些技术 后端技术 springboot3 security权限框架&#xff08;后台&#xff09;mybatisPlus框架jwt生成tokeneasyexcel导入导出递归查询拦截器校验tokenredis的zset做排行榜功能redis的list做最新课程的功能redis做为缓存技术redis作为计数器&#xff0c;实时记录浏览量&…