No olvides que en las ciencias informáticas un problema casi siempere puede tener diferentes soluciones, no obstante nosotros aquí mostramos lo más óptimo y mejor.
Solución:
No creo que el demonio ADB que se ejecuta en el dispositivo se pueda conectar a dos servidores ADB. Intente desconectarlo del ADB de su máquina host y luego conéctelo al ADB del contenedor Docker.
Mientras intentaba lo mismo, me encontré con otros problemas relacionados con eso, que me gustaría compartir para que otros puedan ahorrar tiempo:
Problema 1: lsusb no se instaló en el contenedor
En mi caso susb no estaba instalado, así que lo instalé con el siguiente comando:
apt-get update
apt-get install usbutils
Problema 2: no puedo ver el dispositivo incluso después de la instalación de lsusb y ADB SDK
Debe reiniciar su contenedor con el -v
opción, y sí, no olvide eliminar el servidor ADB como se indica en una de las respuestas.
En el anfitrión:
adb-kill server
docker run -ti -d --privileged -v /dev/bus/usb:/dev/bus/usb container_name
En caso de que alguien quisiera hacerlo desde cero, he escrito una entrada de blog sobre ello:
Cómo conectar dispositivos ADB al contenedor de Linux
Esto no responde la pregunta exacta que estaba haciendo, pero aborda lo que estaba tratando de lograr: conectarse a un dispositivo Android conectado a un host acoplable desde un cliente adb que se ejecuta dentro de un contenedor acoplable. Incluyo esto para cualquiera que intente lograr lo mismo (como yo).
El cliente adb admite un -H
opción que le dice dónde encontrar el servidor adb para conectarse. Docker admite el nombre de host “host.docker.internal” que siempre se asigna a la dirección IP del host de Docker. Suponiendo que su dispositivo está conectado al host docker, puede hacer lo siguiente para que su cliente adb en contenedor se conecte al servidor adb que se ejecuta en el host docker:
adb -H host.docker.internal devices
Cumple el objetivo sin tener que montar los puertos USB.
Referencia: https://developer.android.com/studio/command-line/adb
Actualización: Hace poco me enteré de que host.docker.internal solo es compatible con Docker para Mac en las versiones 18.0 y superiores.
Aquí puedes ver las reseñas y valoraciones de los lectores
Si haces scroll puedes encontrar los comentarios de otros usuarios, tú igualmente eres capaz mostrar el tuyo si lo deseas.