一、环境和情景
高通安卓卡 ,Android虚Android
二、相关命令
(1)、推送容器镜像到卡里面,并加载容器镜像
adb push android-latest.img /data/local/android-latest.img
docker load -i /data/local/android-latest.img //加载镜像
(2)、查看镜像
docker images
(3)、创建网络模式
macvlan:
docker network create -d macvlan --subnet=192.168.11.0/24 --gateway=192.168.11.1 -o macvlan_mode=bridge -o parent=eth0 macvlan && setprop persist.network.mode macvlan
ipvlan:
docker network create -d ipvlan --subnet=192.168.11.0/24 --gateway=192.168.11.1 -o ipvlan_mode=l2 -o parent=eth0 ipvlan && setprop persist.network.mode ipvlan
桥接网络模式:
docker network create --subnet=192.168.11.0/24 bnet
(4)、查看网络模式
docker network ls
(5)、删除网络模式
docker network rm netWorkName
例:docker network rm ipvlan
(6)、创建容器(macvlan模式)
注意:这里容器ip要和网络模式的网段一样,不然会出现容器网络不通情况
例如:网络模式ip:192.168.11.0 说明是11网段
则容器的ip应该为:192.168.11.xxx
con_ip=192.168.11.10/24 con_gateway=192.168.11.1 con_dns1=114.114.114.114 con_dns2=8.8.8.8 con_storage=40960 docker container create -h aaaa --name aaaa --cpuset-cpus 0-7 --mac-address=f0:d7:af:c3:a0:66 -m 8G --platform linux/amd64 --restart=always --network macvlan -v /data/local/lxc_instance1:/data android:latest instance1
创建容器固定ip(macvlan):
con_ip=192.168.11.126/24 con_gateway=192.168.11.1 con_dns1=114.114.114.114 con_dns2=8.8.8.8 con_storage=40960 docker container create -h aaaa --name aaaa --cpuset-cpus 0-7 --mac-address=f0:d7:af:c3:a0:66 -m 8G --ip=192.168.11.126 --platform linux/amd64 --restart=always --network macvlan -v /data/local/lxc_instance1:/data android:latest instance1
con_ip=192.168.11.128/24 con_gateway=192.168.11.1 con_dns1=114.114.114.114 con_dns2=8.8.8.8 con_storage=40960 docker container create -h bbbb --name bbbb --cpuset-cpus 0-7 --mac-address=f0:d7:af:c3:a0:67 -m 8G --ip=192.168.11.128 --platform linux/amd64 --restart=always --network macvlan -v /data/local/lxc_instance2:/data android:latest instance2
创建容器固定ip(ipvlan)
con_ip=192.168.11.126/24 con_gateway=192.168.11.1 con_dns1=114.114.114.114 con_dns2=8.8.8.8 con_storage=40960 docker container create -h aaaa --name aaaa --cpuset-cpus 0-7 -m 8G --ip=192.168.11.126 --platform linux/amd64 --restart=always --network ipvlan -v /data/local/lxc_instance1:/data android:latest instance1
创建容器固定ip(桥接网络)
注意:这里的bnet和步骤3创建的桥接网络名要对应上
con_ip=192.168.11.126/24 con_gateway=192.168.11.1 con_dns1=114.114.114.114 con_dns2=8.8.8.8 con_storage=40960 docker container create -h aaaa --name aaaa --cpuset-cpus 0-7 --mac-address=f0:d7:af:c3:a0:66 -m 8G --ip=192.168.11.126 --platform linux/amd64 --restart=always --network bnet -v /data/local/lxc_instance1:/data android:latest instance1
(7)、查看已创建的容器
docker ps -a
(8)、启动容器
docker start 容器name
(9)、重启容器
docker restart 容器name
(10)、停止容器
docker stop 容器name
(11)、查看容器IP
docker ips
(12)、删除容器
docker rmi -f 容器name
(13)、删除容器镜像
docker rmi IMAGE ID
(14)、进入一个正在运行的容器
docker exec -it <容器ID/NAME> sh
(15)、docker杀死一个容器
docker kill [容器名或ID]
(16)、docker列出最近一次启动过的容器
docker ps -l
(17)、容器应用操作相关
卸载应用:docker exec -it [容器名称] pm uninstall [应用包名]
启动应用:docker exec -it [容器名称] am start [应用包名]
停止应用:docker exec -it [容器名称] am force-stop [应用包名]
启用应用:docker exec -it [容器名称] pm enable [应用包名]
禁用应用:docker exec -it [容器名称] pm disable-user [应用包名]
(18)、显示容器资源使用统计
docker stats
(19)、根据容器名获取容器instance
docker ps -a | grep containerName | awk '{print $4}'|tr -d '\\\"'
(20)、获取当前所有的instance
docker ps -a --format "{{.Command}}"|grep -v "COMMAND"|awk '{print $2}' |tr -d '\"'
(21)、查看容器ip
docker ips
(22)、查看网络模式网段和网关
docker network inspect id/name
(23)、创建tcp、udp映射端口
iptables -A DOCKER ! -i bnet -o bnet -p tcp --dport 7777 -d 192.168.11.126 -j ACCEPT
iptables -t nat -A DOCKER ! -i bnet -p tcp --dport 6677 -j DNAT --to-destination 192.168.11.126:7777
iptables -A DOCKER ! -i bnet -o bnet -p udp --dport 6666 -d 192.168.11.126 -j ACCEPT
iptables -t nat -A DOCKER ! -i bnet -p udp --dport 8001 -j DNAT --to-destination 192.168.11.126:6666
(24)、删除tcp、udp映射端口
iptables -D DOCKER ! -i bnet -o bnet -p tcp --dport 7777 -d 192.168.0.2 -j ACCEPT
iptables -t nat -D DOCKER ! -i bnet -p tcp --dport 6677 -j DNAT --to-destination 192.168.0.2:7777
iptables -D DOCKER ! -i bnet -o bnet -p udp --dport 6666 -d 192.168.0.2 -j ACCEPT
iptables -t nat -D DOCKER ! -i bnet -p udp --dport 8001 -j DNAT --to-destination 192.168.0.2:6666
(25)、查询映射端口
iptables -t nat -vnL
(26)、保存映射的端口
iptables-save > /data/iptables.rules
注:路径可以自己定义
(27)、恢复映射的端口
重启后,映射的端口会丢失,需要重启前save,重启后restore
iptables -F
iptables-restore /data/iptables.rules