モバイルデバイスでアプリをデバッグしたい(またはChromeでページをスキャンしたい)、dockerコンテナを使用してadbを受け入れようとしています。コンテナでadbサーバーを起動すると、すべてがうまくいきます。を使用して自分のデバイスを一覧表示することもできますが、adb devices
chrome://inspect/#devices(ローカルコンピュータで)に移動すると、自分のデバイスを見ることはできません。デバイスが一覧表示されます。そこに。
これがDockerコンテナを実行する方法です。
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を追加してくださいドッカーコンテナChromeのチェックインConfigure...
(172.23.0.2:5037
コンテナの外側に表示する必要があるため、ここではipを使用してください)。