2016-02-12 8 views
10

httpsを使用しないJavaScriptサービスワーカーのような特定の機能がありますが、ローカルホストでのみ動作しますが、ドッカーコンテナ内でアプリを実行すると、ドッキングウィンドウマシンの、私はそのIPにlocalhostをマッピングする方法はあり'localhost'を使用してドッカーマシンに接続する

docker-machine ip default 

から私が手アドレスを使用して接続する必要がありますか?

+0

私は 'JavaScriptをWorker'に精通していないが、私は、ブラウザ上でこの実行が、いないローカルホスト –

+0

はい、それはあなたのブラウザで実行さだと思います。しかし、 'localhost'以外のホスト名でサーバー上で実行している場合は、そのページを動作させるためにhttpsを介してページを提供する必要があります。 – bigblind

+0

ローカルマシンの 'hosts'ファイルを編集し、ドッカーホストの' port 80'をマップするとどうなりますか? –

答えて

22

ドッキングホスト上のポートをローカルマシンにマップするために、VirtualBoxポートを前方に追加できます。

お使いのドッキングウィンドウのマシンが「デフォルト」と呼ばれ、あなたがローカルホストにあなたの容器の中にポート80をマッピングすると仮定すると:8888は、次のコマンドを実行します。

vboxmanage modifyvm default --natpf1 "nameformapping,tcp,,8888,,80" 

またはVMが

vboxmanage controlvm default natpf1 "nameformapping,tcp,,8888,,80" 
を実行している場合を

これは、VirtualBox UIのVMの設定で行うこともできます。ここにVirtualBoxの文書がありますhttps://www.virtualbox.org/manual/ch06.html#network_nat

また、ドッカーマシンのポートにコンテナのポートをマップする必要があります。コンテナを起動するときにこれを行う必要があります(これはまた、「EXPOSE 80 「あなたのDockerfile

docker run -p 80:80 mycontainer 

https://docs.docker.com/engine/reference/run/

のコマンドはまた次を参照してください。あなたのhostsファイルの編集https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md

+0

良い答え。私は通常、他の方法で記述されたマッピングの順序を見てきました。 localhost:8888をvm:80にマッピングし、ドッカーマシンの80番ポートをコンテナ内のポート80(パケットの流れ方)にマッピングします。 – Matt

+0

'natpfN'はフラグではなく、定位置の引数です。コマンドは 'vboxmanage controlvm default natpf1"でなければなりません。nameformapping、tcp ,, 8888、、80 "' –

+0

良いキャッチ、それはmodifyvmのためのフラグですが、controlvmではなく...非常に混乱します。私は両方のオプションを表示する答えを更新しました –

13

はローカルマシンだけに見えることを引き起こしドメインに指定されたIPアドレスに直接アクセスします。したがって、docker-machineのIPアドレスをローカルマシンのetc\hostsファイルに追加し、コンテナの80ポートをdocker-machine80ポートにマッピングすることができます。

例:

1)を取得ドッキングウィンドウのホストのIPアドレスあなたのマシンであることを確認し、ローカルマシン

192.168.99.100 domain.com 

3)にetc/hostsファイルに次の行を追加します

$ docker-machine ip default 
192.168.99.100 

2)ドメインを解決する。

$ ping domain.com 
PING domain.com (192.168.99.100): 56 data bytes 
64 bytes from 192.168.99.100: icmp_seq=0 ttl=64 time=0.294 ms 
64 bytes from 192.168.99.100: icmp_seq=1 ttl=64 time=0.437 ms 
64 bytes from 192.168.99.100: icmp_seq=2 ttl=64 time=0.556 ms 
64 bytes from 192.168.99.100: icmp_seq=3 ttl=64 time=0.270 ms 

注:Windowsユーザーの場合

  • は、hostsファイルは、あなただけの1つのドッキングウィンドウのマシンで複数のドメインをサポートする場合は、プロキシコンテナを作成することができますC:\Windows\System32\Drivers\etc\hosts
  • でを関連付けていますあなたの他の容器の前にnginxを入れてください。
1

最も簡単な方法は、ローカルのために127.0.0.1を(追加ホストに、名前を追加VBoxの

設定 - >ネットワーク - >アダプタの1->ポートフォワーディング

からポートフォワーディングを作ることですホスト)、次に適切なポートバインディングを実行し、VMを再起動します。

enter image description here

関連する問題