모바일 장치에서 앱을 디버깅하려고 하며(또는 Chrome에서 페이지를 검사하려고 함) docker 컨테이너를 사용하여 adb를 수용하려고 합니다. 컨테이너에서 adb 서버를 시작할 때 모든 것이 잘 진행됩니다. 을 사용하여 내 장치를 나열할 수도 있지만 adb devices
일단 chrome://inspect/#devices(로컬 컴퓨터에서)로 이동하면 내 장치를 볼 수 없습니다. 장치가 나열됩니다. 거기.
이것이 도커 컨테이너를 실행하는 방법입니다.
docker run --rm -it --privileged -v /dev/bus/usb:/dev/bus/usb -p 5037:5037 beevelop/ionic bash
내가 여기서 무엇을 놓치고 있는 걸까요? 9222, 9229( ) 등 일부 포트를 노출해 보았지만 -p 9222:9222 -p 9229:9229
결과에는 아무런 영향이 없었습니다. usbutils
컨테이너에도 설치해봤습니다 .
답변1
나는 이것을 다음과 같이 달성했습니다.
1)노출된 포트: 5037, 5554, 5555 및 5900(5037뿐만 아니라).
2)socat
노출된 포트의 컨테이너 내부에서 실행하고 컨테이너 IP를 전달합니다(이를 진입점 파일에 넣거나 다른 명령보다 먼저 실행할 수 있음).
(ip가 172.23.0.2라고 가정)
socat tcp-listen:5037,bind=172.23.0.2,fork tcp:127.0.0.1:5037 &
socat tcp-listen:5554,bind=172.23.0.2,fork tcp:127.0.0.1:5554 &
socat tcp-listen:5555,bind=172.23.0.2,fork tcp:127.0.0.1:5555 &
컨테이너에 대해 호스트 이름( docker run --hostname...
)이 정의된 경우 socat 명령에서 IP 대신 호스트 이름을 사용할 수 있습니다(IP를 변경할 수 있으므로 더 좋습니다). 예를 들어 호스트 이름이 다음과 같은 경우 android-emulator
위 명령을 실행할 수 있습니다.
socat tcp-listen:5037,bind=android-emulator,fork tcp:127.0.0.1:5037 &
socat tcp-listen:5554,bind=android-emulator,fork tcp:127.0.0.1:5554 &
socat tcp-listen:5555,bind=android-emulator,fork tcp:127.0.0.1:5555 &
삼)이 IP를 추가하세요도커 컨테이너크롬 체크인 Configure...
(예: 172.23.0.2:5037
컨테이너 외부에 표시되어야 하므로 여기서는 ip를 사용하십시오).