在此之前是我的场景,它说明了我的环境,以便更好地理解我的问题
我的机器上运行了一个docker容器,配置如下:
services:
addb-client:
build:
context: .
dockerfile: Dockerfile
ports:
- 19000:19000
- 19001:19001
- 19002:19002
tty: true
volumes:
- ".:/code"
在我的host
中,我执行以下命令
adb -a -P 5037 server nodaemon
然后我得到以下输出
adb I 01-12 11:06:05 2493 2493 auth.cpp:437] adb_auth_init...
adb I 01-12 11:06:05 2493 2493 auth.cpp:412] adb_auth_inotify_init...
adb I 01-12 11:06:05 2493 2499 transport.cpp:295] emulator-5554: write thread spawning
adb I 01-12 11:06:05 2493 2498 transport.cpp:282] emulator-5554: read thread spawning
adb I 01-12 11:06:05 2493 2493 transport.cpp:1373] fetching keys for transport emulator-5554
adb I 01-12 11:06:05 2493 2493 auth.cpp:489] Calling send_auth_response
adb I 01-12 11:06:05 2493 2493 adb.cpp:114] emulator-5554: offlin
然后在我的docker container
中运行
adb connect yyy.yyy.yyy.yyy
yyy.yyy.yyy.yyy是我的Android模拟器地址,如图所示
failed to connect to 'yyy.yyy.yyy.yyy:5555': Connection timed out
但我被暂停了
我尽力了
adb connect xxx.xxx.xxx.xxx
但我得到了connection refused
注意事项:
1.命令,如,从容器内
adb -H yyy.yyy.yyy.yyy devices
效果很好。
我将感激你能提供给我的任何帮助。如果需要任何额外的信息,请让我知道。谢谢。
3条答案
按热度按时间zbwhf8kr1#
这似乎是一个网络问题……要从docker容器中访问主机,您有两个选项:
1.访问主机上Docker Bridge接口的IP
1.向docker运行时添加参数,以通过'localhost'关键字提供从容器到主机的访问
docker-compose的等价物是:
t5zmwmid2#
对我来说,一个简单的解决方案是使用
adb
命令的-H
选项,值为"host.docker.internal"
,这是Docker解析的特殊DNS名称。例如,如果您想在容器中使用adb
列出所有可用设备,请使用以下命令:vuktfyat3#
如果你在主机上输入
adb devices
得到设备列表,如果你想在容器上的控制台中运行相同的命令得到相同的列表,我会给予一个建议,尝试用ssh**进行端口转发。请检查此答案或此repo。