web-dev-qa-db-ja.com

VPCでDockerを実行し、別のVPCマシンからコンテナーにアクセスする

AWSVPCでdockerを実行しているときに問題が発生します。

これが私の設定です:VPCで2つのマシンを実行しています:

  • 10.0.100.150
  • 10.0.100.151

どちらにもエラスティックIPが割り当てられており、どちらも同じインターネット対応サブネットで実行されています。

10.0.100.150マシンのコンテナで静的ファイルを提供するWebサーバーを実行しているとしましょう。

  • IP:172.17.0.2
  • ポート8111は、マシンの8111ポートで転送されます。

ローカルマシンから静的ファイルにアクセスしようとしています(または別の非VPCマシンもVPCで実行されていないEC2インスタンスを試しました)が、問題なく動作します。

他のマシン(10.0.100.151)からファイルにアクセスしようとすると、ハングします。私はwgetを使用してファイルをプルしています。

Tcpdumpとngrepを使用してデバッグしようとしたところ、リクエストがコンテナに到達したことがわかりました。ホストマシンでngrepを実行すると、リクエストは送信されますが、応答が返されません。コンテナーでngrepを実行すると、要求が送信され、応答が返されます。

複数のiptablesセットアップ(ポストルーティングを有効にし、ポートを手動で転送するなど)を試しましたが、成功しませんでした。

どんな方法でも助けてください-デバッグの指示でさえ大歓迎です。

ありがとう!

10
Bogdan Gaza

weave を使用すると、コンテナネットワークのセットアップがはるかに簡単になります。 AWS固有の詳細な手順については、 プロジェクトのブログ をご覧ください。

2
errordeveloper

これは、EC2インスタンスが、ポート8111の相互アクセスを許可するセキュリティグループに属していないため、相互に通信できないようです。セキュリティグループがそれ自体へのアクセスを許可していること(および両方のEC2インスタンスをセキュリティグループに追加していること)、またはVPCサブネットがポート8111にアクセスできることを確認します。

0
Andy Shinn