2017-12-21 5 views
0

私はネットワーク上で、複数のコンピュータ上で動作し、ネットワーク上の他のインスタンスと通信するアプリケーションを持っています。そして、私はそれを1台のマシンでテストし、ネットワーク内の別のコンピュータで実行されていると各インスタンスに信じさせたいと思っています。どのように私はドッカーでこれを行うことができますか?ドッカーを使用して1台のコンピュータでネットワークをエミュレートする

+0

あなたはブリッジネットワークモードを使用することができますそのドメイン名で仮想ネットワークとポイントサーバーをサーバーに作成します。システムは、ドッカーDNSリゾルバを使用して名前を内部IPにマップし、通信を提供する必要があります。 –

+0

何を試しましたか?同じネットワーク上でドッカーコンテナを実行すると、アクセス可能になります。ドッカーを使用して作成すると、同じ結果が得られます。 – Rafael

+0

'docker-machine'を使うことができます。 'docker-machine'を使って、単一のホスト上に異なる' IP 'を持つ複数の 'virtual-docker-host'を作成することができます。 'docker'ホストの仮想マシンと考えることができます。 – SangminKim

答えて

1

上記の「h」と同様、ブリッジネットワークドライバがこれを行います。このドライバはデフォルトのドライバなので、ホスト上で複数のコンテナを実行する場合、IPを介して互いにアクセスできるはずです。

DNSの解決が必要な場合は、ブリッジネットワークを定義する必要があります。デフォルトのブリッジネットワークではそれが提供されないためです。ここでhttps://docs.docker.com/engine/userguide/networking/

詳細は、カスタムブリッジネットワークを使用して簡単なデモです:

は、ネットワークを作成します。

$ docker network create mynet 

は、そのネットワーク上のいくつかの名前のコンテナを起動します。

$ docker run --rm -d --name one --net mynet nginx:latest 
$ docker run --rm -d --name two --net mynet nginx:latest 

各コンテナからND(S)他を打つ:

1 - > 2:

$ docker exec -it one ping two 
PING two (172.18.0.3): 56 data bytes 
64 bytes from 172.18.0.3: seq=0 ttl=64 time=0.098 ms 
... 

2 - > 1:

$ docker exec -it two ping one 
PING one (172.18.0.2): 56 data bytes 
64 bytes from 172.18.0.2: seq=0 ttl=64 time=0.192 ms 
... 

クリーンアップ:

$ docker kill one two 
$ docker network rm mynet 
関連する問題