18

外部デバイスから docker サービスにアクセスすることは可能ですか? fig を介してサービスを構築し、ポート 3000 を公開しました。私は fig を docker-osx で使用しているため、docker は virtualbox 内で実行されています。

ここで、外部デバイス (つまり、携帯電話またはタブレット) から提供されるサービスにアクセスする必要があります。

現時点では、VirtualBox 環境をホストしているマシンから localdocker:3000 でのみサービスにアクセスできました。

4

5 に答える 5

22

テストに OSX (および Windows) を使用している場合、Docker は仮想マシンを作成します。これは、Linux ベースのシステムでの実行とは少し異なります。

次のことを試してください。

docker-machine ip

これにより、仮想マシンの IP が返されます。私の例では、それは

192.168.99.100

実行docker psすると、ポート マッピングが表示されます (下の表を少しクリーンアップします)。

$ docker ps
CONTAINER ID        IMAGE                STATUS              PORTS                   NAMES
42f88ac00e6f        nginx-local          Up 30 seconds       0.0.0.0:32778->80/tcp

0.0.0.0:32778->80/tcpdocker は、自分のマシン (この場合は仮想マシン) の 32778 (ランダムに割り当てられたポート) をコンテナーのポート 80 にマッピングしていることを意味します。

この情報はdocker port 42f88ac00e6f 80(42f88ac00e6f はコンテナー ID または名前)から取得することもできます。

コンテナーの nginx にアクセスするために、仮想マシンの ip:32778 を使用できるようになりました。

http://192.168.99.100:32778/は、docker コンテナーの 80 ポートに転送されます (これを使用してローカルでテストします)

明らかに、上記のポートはネットワークからアクセスできませんが、ファイアウォールを設定して転送することができます =)

于 2016-04-12T08:31:59.970 に答える
15

ポート フォワーディング ルールを VirtualBox VM 設定に追加することをお勧めします。

VM 設定を開きます => [ネットワーク] タブ => [アダプタ 1]。デフォルトでは、NAT に接続されています。
ポート転送ボタンを押して、新しいルールを追加します。
ホスト IP は、コンピューターの IP アドレスである必要があります。127.0.0.1 の可能性もありますが、その場合は自分のコンピューターでのみ表示されます。
ホスト ポートの値については、少し実験する必要があります。未使用であり、コンピューターのファイアウォールによって許可されている必要があります。
ゲスト IP は空のままにします。
質問のように、ゲスト ポートは 3000 にする必要があります。

その後、アドレスhttp://HOST_IP:HOST_PORTのローカル ネットワークからアクセスできるようになります。

于 2016-04-29T12:18:12.333 に答える
8

そのポートで着信接続をリッスンし、それらの要求を docker コンテナーに転送するようにローカル マシンに指示する必要があります。

Nginxはこれに非常に優れており、次のような単純な構成です。

/etc/nginx/sites-enabled/your-file.conf

server {                                                                   
    listen 3000;                                                              

    server_name YOUR_IP_ADDRESS;                                              

    proxy_redirect off;                                                       
    proxy_buffering off;                                                      
    proxy_set_header Host $host;                                              
    proxy_set_header X-Real-IP $remote_addr;                                  
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;              

    location / {                                                              
        proxy_pass http://127.0.0.1:3000;                                            
    }                                                                         
} 

お使いの携帯電話/タブレットがヒットした場合は正常に動作しますhttp://YOUR_IP_ADDRESS:3000/

于 2014-08-15T17:13:26.780 に答える
0

によって報告された IP アドレスを使用して、boot2docker vm にアクセスできるはずですbook2docker ip

于 2014-08-15T16:43:13.663 に答える