Android运行Docker!(Termux + QEMU + linux | 您所在的位置:网站首页 › aidlearningssh › Android运行Docker!(Termux + QEMU + linux |
此教程将教你如何在Android端搭docker 1. DockerDocker是一个开放源代码软件项目,让应用程序部署在软件货柜下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。 (来自https://zh.m.wikipedia.org/wiki/Docker) · 为什么在android不能使用docker众多厂商阉割掉了cgroup和namespace等docker需要的功能 · 你为什么还说要在android运行docker,标题党!……所以我们这次用QEMU虚拟机模拟x86_64的linux系统 · 效率怎样非常低,在我骁龙625设备上运行docker指令大概需要15秒才有反应(alpine standard版) · 那些有啥用啊没什么用,就是折腾,看着别人抱怨android不能运行docker而我能运行的感觉很爽,至少能运行 (废话连篇) 2. 准备工作①. Termux请看上一篇文章:准备工作 Termux②. Alpine Linux系统镜像Small. Simple. Secure.Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.(来自https://alpinelinux.org/) 使用Alpine的原因: 体积占用小,完全安装后的镜像不到1gb 安装快(废话) 内存占用小,idle状态仅占用30多MB内存 传送门:standard-x86_64: alpine-standard-3.10.1-x86_64.iso(v3.10.1, OfficialSite),或者在Termux中: 1wget http://dl-cdn.alpinelinux.org/alpine/v3.10/releases/x86_64/alpine-standard-3.10.1-x86_64.isovirtual-x86_64: alpine-virt-3.10.1-x86_64.iso(v3.10.1, OfficialSite),或者在Termux中: 1wget http://dl-cdn.alpinelinux.org/alpine/v3.10/releases/x86_64/alpine-virt-3.10.1-x86_64.iso官网上写到visual版与standard版相似但对虚拟机有特殊优化。standard版我已测试成功,这次使用visual版。 ③. VNC Viewer (可选)用来连接qemu虚拟机的”显示器”,还可以连接蓝牙/OTG鼠标和键盘,非常强大 为什么是可选,因为qemu有不输出图像模式(-nographic),直接在termux控制台输出,不需要”显示器”,但是有可能翻车。 传送门:VNC Viewer(GooglePlay) 3. 详细过程Ⅰ. 安装依赖在Termux中: 12pkg install x11-repo unstable-repopkg install qemu-utils qemu-system-x86_64 Ⅱ. 创建虚拟镜像(硬盘)在Termux中: 1qemu-img create -f qcow2 virt-alpine.img 5g参数中5g代表创建一个最大容量为5g的镜像,可调节,最少2g以保证docker能正常安装。 Ⅲ. 启动虚拟机在Termux中: 1qemu-system-x86_64 -hda virt-alpine.img -cdrom alpine-virt-3.10.1-x86_64.iso -boot d -m 512 -nographic参数解释: -hda : 启动的虚拟硬盘 -cdrom : 启动的光盘镜像文件(相当于用光盘安装windows) -boot : 启动槽位,选d (我也不是太清楚) -m : 内存大小,单位mb -nographic : 无图像模式,直接在控制台输出 --vnc :1 : 以vnc为图像模式输出到”显示器”,并占用vnc 1端口先使用-nographic模式启动,若长时间没出现alpine bootlog这界面,则先按CTRL+X+A结束进程(或用htop杀掉qemu进程),再用--vnc :1 vnc图像模式启动如何连接: 打开VNC Viewer 点击右下角加号(+) Address填localhost:1(--vnc占用的端口),name随意 点击CREATE→CONNECT,就可以连接了(用VNC Viewer操作可能会麻烦,建议用蓝牙/OTG鼠标键盘) Ⅳ. 安装Alpine到虚拟硬盘· 使用root账户登录: · 配置网络:在alpine中,使用vi编辑器: 1vi /etc/network/interfaces添加如下配置 1234auto loiface lo inet loopbackauto eth0iface eth0 inet dhcp保存后重启网络: 1/etc/init.d/networking restart这样alpine就能访问互联网了 · 设置软件源:1setup-alpine选择21(清华大学源),等待更新即可 · 安装:1setup-alpine详细配置: Select keyboard layout: cn (选择CN键盘布局) Select variant (cn) Enter system hostname: stageguard (输入hostname名称,随意) Which one do you want to initialize? (or '?' or 'done') [eth0] Ip address for eth0? (or 'dhcp', 'none', '?') [10.0.2.15] dhcp (选dhcp) Changing password for root (修改root用户密码) Which timezone are you in? ('?' for list) [UTC] Asia/Shanghai (时区填Asia/Shanghai) HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none] (代理地址,默认none) Enter mirror number (1-47) or URL to add (or r/f/e/done) [f]: 21 (选择软件源,21(清华源)) Which SSH server? ('openssh', 'dropbear' or 'none') [openssh] (SSH服务器,选择openssh(默认)) Which disk(s) would you like to use? (or '?' for help or 'none') [none]sda (安装在何处,选sda) How would you like to use it? ('sys', 'data', 'lvm' or '?' for help) [?] sys (安装方式,选sys) WARNING: Erase the above disk(s) and continue? [y/N]: y (清除整个硬盘,y(是))若出现网络问题: 应该是默认dns服务器异常。编辑/etc/resolv.conf将10.0.2.3改为8.8.8.8即可bash vi /etc/resolv.conf Installing system on /dev/sda3:initramfs: creating /boot/it.....Installation is complete. Please reboot. 安装完成,现在关闭虚拟机 1poweroff Ⅴ. 启动Alpine并安装docker· 启动qemu虚拟机在Termux中: 1qemu-system-x86_64 -hda virt-alpine.img -boot c -m 512 -netdev user,id=nde1,hostfwd=tcp::2222-:22 -device e1000,netdev=nde1,id=d-net1 -nographic参数解释: -hda : 启动的虚拟硬盘 -boot : 启动槽位,选c (我也不是太清楚) -m : 内存大小,单位mb -netdev : 网络配置,详情请看QEMU_Wiki:Documentation/Networking -device : 设备配置(当前指向网络设备) -nographic : 无图像模式,直接在控制台输出 --vnc :1 : 以vnc为图像模式输出到”显示器”,并占用vnc 1端口-netdev参数中的hostfwd可以映射网络,当前配置会将虚拟机中22(SSH默认)端口映射到物理网络的2222端口上。 · 配置SSHD(可选)在Alpine中: 1vi /etc/ssh/sshd_config取消注释PermitRootLogin并修改为yes 重启sshd 现在外部ssh就可以登录alpine的root账户了在Termux中: 1ssh root@localhost -p 2222 · 添加community源在alpine中,docker在其comminuty源里 1vi /etc/apk/repositories取消注释comminuty源修改完成后,执行: 1apk update · 安装docker1apk add docker · 修改docker为开机(虚拟机)启动,启动docker1234567#使docker开机启动rc-update add docker#开启docker服务service docker start#后台启动setsid containerdsetsid dockerd · 测试1docker info DOCKER 安装完成!参考资料: https://github.com/diogok/termux-qemu-alpine-docker/blob/master/README.mdhttps://stageguard.gitee.io/2019/07/30/run-gogs-on-android/ |
CopyRight 2018-2019 实验室设备网 版权所有 |