2017-04-02 8 views
0

にある別のホストからではないのpingドッキングウィンドウコンテナ:することができます私は、同じLAN、両方のランニングドッキングウィンドウでは、2つのホストを持って同じLAN

  • ホストA:172.16.0.113
  • ホストB:172.16 .0.114

私はホストBからホストAに対してpingを実行することができます。しかし、私は、ホストB

からホストA上のドッキングウィンドウコンテナにpingを実行することができない私は、ドッキングウィンドウのデフォルトのネットワークで、Ubuntuを使用してドッキングウィンドウコンテナを作成(brid ge)。デフォルトのdocker0のIPアドレスは172.17.0.1です。ホスト(172.16.0.113)のコンテナ(ubuntu)のIPアドレスは172.17.0.2です。私が使用したコマンドはここにあります:

sudo docker run --name container01 -it -p 8080:80 ubuntu /bin/bash 

私はそのホストであるホストAからpingできます。しかし、私は他のホスト、ホストBからcontainer01にpingできません。私はcontainer01のポートを公開していることに注意してください。

私はホストBからのcontainer01にpingを実行すると、パケットがそのホストのコンテナに送信されると思います。しかし、私はホストB

+0

[ping](https://en.wikipedia.org/wiki/Ping_(network_utility))は[ports](https://en.wikipedia.org/wiki/Port_)で動作しないことに注意してください。 (computer_networking))、ポート8080を公開しても、別のコンテナにpingできるかどうかには影響しません。 –

+0

ありがとうございました。 – LYY

答えて

1

からAさんcontainer01をホストに接続する方法を知りたいたぶん

sudo docker run --name container01 -it --network=host -p 8080:80 ubuntu /bin/bash

1

をやってみドッカーコンテナは、通常、他のホストからアクセス可能でないプライベートアドレスで実行されます。ドッカーホストが複数ある場合は、互いにアクセスできる同じプライベートネットワーク上にコンテナを配置するようにoverlay networkingを設定する必要があります。これはswarm modeで自動的に行うことができます。

ドッカーの外からコンテナに到達するには、ポートを公開する必要があります。 docker runの場合、ホストポート8080をコンテナポート80にマッピングするオプション(これらのポート番号を調整できます)は-p 8080:80オプションです。 docker-compose.ymlには、同様のportsセクションがあります。

+0

私はホストAとBでswarmモードを使用しました。そして私はmy-multi-host-networkというオーバーレイネットワークを作成しました。コマンドは次のとおりです。sudo docker service create --name my_web --network my-multi-host-network --publish 8008:80 --replicas 10 nginx次に、ホストAとBの両方に10個のnginxコンテナを作成しました。my_webのIPアドレス.1は172.16.1.3です。私が172.16.1.3にpingを実行しても、コンテナmy_web.1をホストBのホストAに接続できませんでした。したがって、ホストAのホストBのコンテナを訪問できますか? – LYY

+0

コンテナは、コンテナからコンテナへのオーバーレイネットワークを使用して互いに到達することができます。あなたは、ホストの外からコンテナーへ直接コンテナへ行くことはありません。代わりに、ホスト上の公開ポートを使用してアクセスします。 8008、いずれかのホスト上では、ラウンドロビン経路がコンテナの1つに送られます。 – BMitch

+0

したがって、pingコマンドを使用して接続性をテストしないと、ホストAとホストBのコンテナ間の接続をテストするためにどのコマンドを使用する必要がありますか? – LYY

関連する問題