windows10使用docker desktop搭建stf环境过程分享

一、windows10家庭版安装docker desktop

  • 1、开启Hyper-V功能

将以下内容保存为.cmd文件,然后以管理员身份打开这个文件。安装过程需要几分钟,安装完成后按提示重启,重启完成就能使用功能完整的Hyper-V了

pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt

for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del hyper-v.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
  • 2、查看是否开启Hyper-V功能

查看地址:控制面板-程序-启动或关闭windows功能
image

  • 3、 伪装成windows专业版绕过安装检测

如图,由于Docker Desktop会在安装的时候检测系统版本,直接安装会显示安装失败。所以需要改下注册表绕过安装检测。


使用管理员权限运行cmd命令

REG ADD "HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion" /v EditionId /T REG_EXPAND_SZ /d Professional /F

二、stf环境搭建

android adb 镜像:docker pull sorccu/adb:latest 

rethinkdb镜像:docker pull rethinkdb:latest

openstf镜像:docker pull openstf/ambassador:latest

nginx 代理镜像:docker pull nginx:latest 

查看已经拉取的docker镜像:docker images
  • 2、启动容器
docker run -d --name adbd --privileged -v /d/test/usb:/dev/bus/usb --net host sorccu/adb:latest
docker run -d --name rethinkdb -v /d/test:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
docker run -d --name stf --net host openstf/stf stf local --public-ip 10.0.75.2

注意小心踩坑
1、windows文件挂载路径 D:\test,需要写成-v /d/test:/data
2、stf容器 --public-ip 参数设置:
docker desktop会开启一个虚拟网卡,默认地址为10.0.75.0


尝试ping 10.0.75.0 这个地址发现是不通的,于是ipconfig 查看网络信息,发现docker开放的是10.0.75.1这个地址
image
于是使用10.0.75.1运行容器docker run -d --name stf --net host openstf/stf stf local --public-ip 10.0.75.1 ,发现使用浏览器打开http://10.0.75.1:7100被拒绝连接,后考虑端口映射问题,但一直没有解决
后考虑直接访问容器stf服务,于是进入容器,获取容器的IP

PS C:\> docker exec -it 47b16b69bc94 /bin/bash
stf@linuxkit-00155d010619:/app$ ip addr

发现容器ip为10.0.75.2,使用这个地址访问7100端口,终于成功,但是一直弹这个
image
于是使用容器ip重新部署容器
docker run -d --name stf --net host openstf/stf stf local --public-ip 10.0.75.2
访问正常,至此stf环境搭建完成

三、映射本地设备到docker 容器

1、本地电脑上需要对外开放adb 的5037端口
adb nodaemon server -a -P 5037
2、在docker stf容器开启监听
docker exec <stf的容器id> bash -c 'stf provider --name mikezhoudeMac-mini.local --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 20000 --public-ip <stf容器ip:10.0.75.2> --storage-url http://localhost:7100/ --adb-host <docker desktop地址:10.0.75.1> --adb-port 5037 --vnc-initial-size 600x800 --allow-remote'adb nodaemon server -a -P 5037
注意两个IP地址参数,–public-ip、–adb-host
至此本地真机使用usb连接或者模拟器都可以映射到stf容器中

`

2 个赞