web-dev-qa-db-ja.com

「localhost」を使用してdocker-machineに接続します

Httpsを使用しないJavaScriptサービスワーカーなど、特定の機能はlocalhostでのみ機能しますが、docker-machineの上で実行されるdocker-composeを使用してdockerコンテナー内でアプリを実行する場合、次を使用して接続する必要があります私が得るアドレス

docker-machine ip default

localhostをそのIPにマッピングする方法はありますか?

13
bigblind

VirtualBoxポートを前方に追加して、Dockerホストのポートをローカルマシンにマッピングできます。

Dockerマシンが「デフォルト」と呼ばれ、コンテナのポート80をlocalhost:8888にマッピングすると仮定すると、実行できます:

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

またはVMが実行されている場合

vboxmanage controlvm default natpf1 "nameformapping,tcp,,8888,,80"

これは、VMの設定のVirtualBox UIでも実行できます。これがVirtualBoxのドキュメントです https://www.virtualbox.org/manual/ch06.html#network_nat

また、コンテナのポートをdockerマシンのポートにマップする必要があります。コンテナを起動するときにそれを行います(これは、Dockerfileに「EXPOSE 80」コマンドがあることも前提としています)

docker run -p 80:80 mycontainer

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

参照: https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md

28
Kristofor Carle

hostsファイルを編集すると、ローカルマシンはドメインに指定されたIPアドレスのみを直接参照します。したがって、docker-machineのIPアドレスをローカルマシンのetc\hostsファイルに追加し、コンテナのポート8080のポートdocker-machineにマップできます。

例:

1)ドッカーホストのIPアドレスを取得する

$ docker-machine ip default
192.168.99.100

2)この行をローカルマシンのetc/hostsファイルに追加します

192.168.99.100 domain.com

3)マシンがドメインを解決していることを確認します。

$ 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ファイルはC:\Windows\System32\Drivers\etc\hostsにローカライズされます
  • 単一のdocker-machineで複数のドメインをサポートする場合は、他のコンテナーの前面にnginxを含むプロキシコンテナーを作成できます。
14
Hemerson Varela

最も簡単な方法は、VBoxからポート転送を行うことです

設定->ネットワーク->アダプター1->ポート転送

次に、名前を追加し、ホストに127.0.0.1(ローカルホスト用)を追加し、適切なポートバインディングを追加してVMを再起動します。

enter image description here

5
Xelian