Не удается подключиться к хосту ADB из контейнера docker - PullRequest
0 голосов
/ 12 января 2020

Перед этим мой сценарий является иллюстрацией моей среды, чтобы лучше понять мою проблему

enter image description here

У меня есть контейнер docker, работающий на моей машине со следующей docker-compose конфигурацией

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

И я go следующий вывод

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

ггг.ггг.ггг.ггг, являясь моим 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

Работает хорошо.

Буду признателен за любую помощь, которую вы можете мне предоставить. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Спасибо.

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Если вы получили список устройств, набрав adb devices на вашем хосте, и если вы хотите, чтобы тот же список выполнялся той же командой в консоли на контейнере, я бы посоветовал попробовать переадресацию портов с помощью s sh.

Пожалуйста, проверьте этот ответ или этот репо .

0 голосов
/ 13 января 2020

Это похоже на проблему с сетью .... Чтобы получить доступ к хосту из контейнера docker, у вас есть 2 варианта:

  1. Доступ к ip docker мостовой интерфейс на хосте

    $ docker run -ti busybox /bin/sh
    / # netstat -rn | grep ^0.0.0.0 | awk '{print $2}'
    172.17.0.1
    / # nc -vz 172.17.0.1 5037
    172.17.0.1 (172.17.0.1:5037) open
    
  2. Добавить аргумент в среду выполнения docker, чтобы обеспечить доступ из контейнера к хосту через ключевое слово 'localhost'

    $ docker run -ti busybox /bin/sh
    / # nc -vz localhost 5037 ### NOT WORKING
    
    $ docker run -ti --net="host" busybox /bin/sh
    / # nc -vz localhost 5037
    localhost (127.0.0.1:5037) open  ### WORKING
    

docker -композитный эквивалент:

network_mode: host
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...