Dockerコンテナからホストのポートにアクセスする方法
外部世界とネットワークを構築する場合、Dockerはリクエストがホストマシンから来ているかのように動作します。しかし、ホスト上で実行されているプロセスにアクセスする場合、ファイアウォールに追加の設定が必要になることがあります。
解決策:172.18.0.0/16のためにファイアウォールルールを追加すること
ホストマシン上でHTTPサービスのようなプロセスにアクセスしようとした場合、ブロックされることがあります。これは、Dockerコンテナがホスト上で実行されていても、論理的に分離された状態を保つために特別なネットワーキングを使用しており、そのために異なるIPアドレスを持っているからです。
実行中にこれを見ることができます
ifconfig標準のネットワークインターフェースが表示されますが、また...
docker0
インターフェース。デフォルトでは、DockerはコンテナのIPアドレスを割り当てるために172.18.0.0/16ブロックを使用します。
解決策は非常に簡単です---ファイアウォールでこのポート範囲を開いてください。Dockerが使用するIP範囲からのリクエストがブロックされている可能性があります。それはプライベートIPアドレス範囲なので、オープンにしていてもリスクは最小限です。UFWの場合、以下のようになります:
sudo ufw allow from 172.18.0.0/24オプションで開くポートを指定できます:
sudo ufw allow from 172.18.0.0/24 to any port 9200iptablesの場合は、次のようになります:
iptables --append INPUT --protocol tcp --src 172.18.0.0/24 --jump DROPAWSのようなマネージドホスティングサービスでは、特に何も変更する必要はありません。セキュリティグループはインスタンスの前にあるネットワークファイアウォールであり、内部トラフィックには影響しないはずです。

