termux中安装alpine,alpine里安装docker

termux只是一个linux模拟环境,不是真正的系统,要安装docker,需要先用qemu建立linux虚拟机,在虚拟机上安装alpine,在alpine里安装docker。本文得到的是x86-64版本的docker。

termux内操作

打开 Termux
pkg update -y && pkg upgrade -y
安装必要的依赖
pkg install qemu-utils qemu-common qemu-system-x86_64-headless wget -y
建立目录
mkdir alpine && cd alpine
下载Alpine Linux 3.20.2 iso
wget http://dl-cdn.alpinelinux.org/alpine/v3.20/releases/x86_64/alpine-virt-3.20.2-x86_64.iso
创建磁盘
qemu-img create -f qcow2 alpine.img 5G
启动
qemu-system-x86_64 -machine q35 -m 2024 -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 -device virtio-net,netdev=n1 -cdrom alpine-virt-3.20.2-x86_64.iso -nographic alpine.img

虚拟机内部操作

用root登录,无密码
设置网络
setup-interfaces
直接选默认
ifup eth0
安装到虚拟机硬盘
setup-alpine
mirrors自动选择
安装完成后,关闭虚拟机(命令 poweroff)

启动方法

启动命令run_qemu.sh:

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::15230-:5230 -device virtio-net,netdev=n1 -nographic  -accel tcg,thread=multi  alpine.img

chmod +x run_qemu.sh
运行虚拟机并进入:
./run_qemu.sh

更新系统并安装 Docker:

echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf
apk update && apk add docker
service docker start
rc-update add docker 

docker version

docker ps

ifconfig

启动命令中的hostfwd=tcp::15230-:5230是把内网的5230和外部的15230端口关联以便用外部IP访问内网。此方式无法使用桥接方式连接网络,只能用映射端口的方式访问内部容器。