安卓手机安装docker

  1. 安装 termux

    下载地址如下,下载arm64的那个,然后直接安装

    https://github.com/termux/termux-app/releases
    
  2. 打开termux,查询手机ip(手机不方便输入,我这里是oppo手机,使用了oppo的跨屏互联)

    任意网卡的IP都行,除了 lo,lo是回环地址,指向的本地。
    image-20240920112557815

  3. 安装ssh工具

    #安装ssh
    pkg install openssh
    
    #启动ssh,需要注意这里的ssh默认端口是8022,不是22
    sshd
    
    #加入开机自动启动sshd(如果需要就开启,不需要就不开启),去掉开机启动去对应文件删除sshd,这里的开机启动时开启termux就启动,并不是手机开机就启动,如果需要开机就启动,把termux设置成开机启动。
    echo "sshd" >> ~/.bashrc 
    
    
    #如果需要alpine的虚拟机也是开机启动 
    #vi .bashrc 输入以下内容
    sshd
    cd /data/data/com.termux/files/home/alpine
    ./run.sh
    
  4. 查看当前用户名和设置密码

    #查看用户名,我这边结果是u0_a377,你应该是不同的
    whoami
    
    
    #给当前用户设置密码,也就是给u0_a377这个用户设置密码
    passwd
    
    
  5. 使用任意ssh工具远程连接

    这里的IP是前面查询到的IP,变了wifi所以IP变了。

  6. 安装 wget 和 vim
    安装可后面备用

    pkg install wget
    pkg install vim
    
  7. 安装qemu

    apt install qemu-utils qemu-common qemu-system-x86_64-headless
    
  8. 下载Alpine linux系统(这里需要下载 arm架构的linux ,x86的 centos 或者 Ubuntu 不确定能不能用,qemu好像都支持)

    mkdir alpine && cd $_
    
    wget http://dl-cdn.alpinelinux.org/alpine/v3.12/releases/x86_64/alpine-virt-3.12.3-x86_64.iso
    
  9. 创建虚拟硬盘

    qemu-img create -f qcow2 alpine.img 5G
    
  10. 在QEMU里面启动安装alpine的引导程序

qemu-system-x86_64 -machine q35 -m 1024 -smp cpus=2 -cpu qemu64 \
  -drive if=pflash,format=raw,read-only,file=$PREFIX/share/qemu/edk2-x86_64-code.fd \
  -netdev user,id=n1,hostfwd=tcp::2222-:22 -device virtio-net,netdev=n1 \
  -cdrom alpine-virt-3.12.3-x86_64.iso \
  -nographic alpine.img

然后使用root用户登录,这个用户是QEMU常见的虚拟机的默认用户是root和前面 termux的 用户无关。

  1. 网卡设置

    setup-interfaces
    #然后又更具配置配置网卡
    
    ifup eth0
    
  2. 让开机时能输出信息

    sed -i -E 's/(local kernel_opts)=.*/\1="console=ttyS0"/' /sbin/setup-disk
    
  3. 创建安装文件
    vi answerfile

    KEYMAPOPTS="us us"
    HOSTNAMEOPTS="-n alpine"
    INTERFACESOPTS="auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet dhcp
        hostname alpine
    "
    TIMEZONEOPTS="-z UTC"
    PROXYOPTS="none"
    APKREPOSOPTS="http://dl-cdn.alpinelinux.org/alpine/v3.12/main http://dl-cdn.alpinelinux.org/alpine/v3.12/community"
    SSHDOPTS="-c openssh"
    NTPOPTS="-c busybox"
    DISKOPTS="-v -m sys -s 0 /dev/sda"
    
  4. 安装alpine

    setup-alpine -f answerfile
    
  5. 安装完成之后关机

    poweroff
    
  6. 创建启动脚本

    touch run.sh
    chmod 775
    

    vim run.sh,然后输入以下内容(这时候手机的8081被映射到虚拟机的80端口)

    #这是创建qemu的指令,详情参数查询qemu的文档
    qemu-system-x86_64 -machine q35 -m 2048 -smp cpus=2 -cpu qemu64 \
      -drive if=pflash,format=raw,read-only=on,file=$PREFIX/share/qemu/edk2-x86_64-code.fd \
      -netdev user,id=n1,hostfwd=tcp::2222-:22,hostfwd=tcp::8081-:80 -device virtio-net,netdev=n1 \
      -nographic alpine.img
      
    
  7. 启动qemu虚拟机里面的alpine系统

    ./run.sh
    
  8. 然后安装docker 和启动
    alpine的包管理工具是apk,termux的包管理工具是 pkg,这类似centos的包管理工具是yum,ubuntu的是apt

    #这个docker改了daemon.json的镜像地址以后依旧是连接的docker.io不知道为啥(后查找,别的地方的docker 也不能用了,好像国内的docker都不能用了)
    apk update && apk add docker
    service docker start
    
    #开机启动
    rc-update add docker
    
  9. 国内镜像不能用的问题解决,找还能用的小厂
    docker 之前大部分镜像源都不能用了,包括阿里,华为,清华的共有源
    还有部分小厂的源还能用,据说是为了推国内镜像的可靠源(atomHub:https://hub.atomgit.com/)

    vi /etc/docker/daemon.json,输入一下内容,然后重启docker: service docker restart

    {
      "registry-mirrors": ["https://dockerhub.xianfish.site"]
    }
    
  10. qemu指定的端口是手机的8081映射到虚拟机的80端口,我们在虚拟机里面安装个nginx在外面是可以直接访问的

    #安装nginx
    apk add nginx
    
  11. 修改nginx的配置文件

    默认配置文返回的都是404,修改以后可以在外面正常访问

    修改以后启动

    service nginx start
    image-20240919210745799

  12. 浏览器访问:http://192.168.156.42:8081/

    image-20240920112447398

  13. 有IPV6可以通过DDNS 映射出去作为移动服务器了,可以跑个redis ,mysql 之类的之类的小东西。

  14. 不知道安卓上的qemu虚拟机性能损失多少,如果需要性能可以考虑root以后直接在手机上安装ubuntu之类的linux,以达到性能最低损失

posted on 2024-09-20 18:26  zhangyukun  阅读(528)  评论(0编辑  收藏  举报

导航