2017-12-07 20 views
0

私は、server_routerネットワーク(ブリッジネットワークドライバ)に接続されたドッカーサーバコンテナと、client_routerネットワーク(ブリッジネットワークドライバ)に接続されたドッカークライアントコンテナを実行しています。ルータコンテナは、server_routerとclient_routerの両方のネットワークに接続されています。別のコンテナを使用する2つのコンテナ間の通信

サーバとクライアントが異なるドッカーネットワークに属し、ルータがサーバとクライアントのコンテナ(サーバとクライアントのトラフィックをルーティングできる実際のルータ)に接続できるネットワークトポロジが必要です。これは実際のコンピュータの代わりにドッキング・コンテナでシミュレーションを実行しているネットワーク・シミュレーションに必要です。 (使用されているネットワークシミュレータはTCP Experiment Automation Using Python(TEACUP)です)。セットアップを作成するために使用さ

コマンド:

docker network create server_router 
docker network create client_router 
docker run -itd --net client_router --name client ubuntu:14.04 
docker run -itd --net server_router --name server ubuntu:14.04 
docker run -itd --net server_router --name router ubuntu:14.04 
docker network connect client_router router 
docker network inspect client_router 
docker network inspect server_router 

representation of the network topology

私は、ルータのコンテナおよびその逆からクライアントコンテナにpingを実行することができています、また、私はルータコンテナからサーバーコンテナに対してpingを実行することができています(同じネットワークに属しているため)逆も同様です。 しかし、クライアントコンテナからサーバーコンテナにpingできません。その逆もありません。

pingコマンドは結果を表示しません。

ご意見は大きな助けになります。

答えて

0

OK、これはモックアップとテストのためであれば、あなたはおそらくオフにチェックする必要がありますアクションをリストしてみましょう:

  1. 2つの仮想ネットワーク間でIPパケットをルーティングするようにrouterが設定されていることを確認する必要があります。
  2. ネットワークの作成中にIPサブネットをハードコードする必要があります。
  3. routerの作成中にルートをハードコードする必要があります。
  4. デフォルトゲートウェイclientserverrouterコンテナではないため、これらのコンテナにルートを手動で追加して、ルータを通ってお互いに話をする必要があることを確認する必要があります。
  5. clientserverのホストファイルを手動で編集する必要がある場合は、名前でアドレス指定する必要があります。
  6. 上記DNSが機能するためには、各コンテナのIPを手動で識別する必要があります。

さらに多くの手順を忘れています...

+0

私は両方の側(サーバーとクライアント)のルータのインターフェイスにゲートウェイipを追加し、私の問題を解決しました。ありがとうございました! – sharath

0

それはあなたのサーバーに

$ docker network connect client_router server 

をclient_routerからのネットワーク接続を追加するのを忘れたので、私は、次のコマンドで正常に物事を実行することができたです。

$ docker network create server_router 
$ docker network create client_router 
$ docker run -itd --net client_router -h client --name client ubuntu:xenial 
$ docker run -itd --net server_router -h server --name server ubuntu:xenial 
$ docker run -itd --net server_router -h router --name router ubuntu:xenial 
$ docker network connect client_router router 
$ docker network connect client_router server 

、その後

クライアントからサーバに成功したpingを実行することができ
[email protected]:~$ docker exec -it client bash 
[email protected]:/# ping server 
PING server (172.22.0.3) 56(84) bytes of data. 
64 bytes from server.client_router (172.22.0.3): icmp_seq=1 ttl=64 time=0.072 ms 
64 bytes from server.client_router (172.22.0.3): icmp_seq=2 ttl=64 time=0.048 ms 
64 bytes from server.client_router (172.22.0.3): icmp_seq=3 ttl=64 time=0.052 ms 
^C 
+0

この行を追加すると、serverとclient_routerの間にリンクが作成されます。ここで私はルータとコンテナを介してサーバーとクライアントとの通信を探しています。 – sharath

+0

OMG!ルータのDockerが実際のルータのように動作することを期待していますか?その後、単純なubuntuマシンではなくvrouterを持って、ルータのように動作する必要があります。あなたが与えてくれたその名前は、ウブナットのドッカーが名前でヴロューターのように振る舞うことを期待していません:) – Viswesn

+0

私はこの仕事をするために何ができますか?両方のルータのデフォルトゲートウェイが変更され、ルータコンテナ内のiptableルールが変更されますか? – sharath

関連する問題