LoginSignup
0
0

どうしてEC2インスタンスの中にあるDockerのアプリケーションを表示、実行できるのか

Last updated at Posted at 2024-01-31

WEBリクエスト(80や443ポート)がWEBサーバーに来たときに、どうしてEC2インスタンスの中にあるDockerのアプリケーションを表示、実行できるのかわからなかったので調べた。
結論、Dockerデーモンがdocker-compose.ymlに書かれているマッピングを元に振り分けているようだ。

ステップ

ステップ1: リクエストの到着

ドメイン名解決: ユーザーがブラウザにURLを入力すると、DNSがドメイン名をIPアドレスに解決します。このIPアドレスは、あなたのEC2インスタンスに割り当てられています。

EC2へのリクエスト: リクエストはインターネットを介してこのIPアドレス(あなたのEC2インスタンス)に送信されます。

ステップ2: EC2インスタンスとWebサーバー

ポートリスニング: EC2インスタンス上で動作しているWebサーバー(例えばNginxやApache)は、80番ポート(HTTP)や443番ポート(HTTPS)でリクエストを待ち受けています。

リクエストの受信: Webサーバーはリクエストを受け取り、設定ファイル(例えばNginxの設定ファイル)に基づいて、そのリクエストをどのように処理するかを決定します。

ステップ3: Dockerコンテナへの転送

docker-compose.ymlとポートマッピング: docker-compose.ymlファイルで定義されたポートマッピングにより、外部からのリクエストがDockerコンテナの特定のポートに転送されるように設定されています。例えば、ports: - "80:8000"の設定は、EC2インスタンスの80番ポートからのリクエストを、Dockerコンテナの8000番ポートにマッピングします。

転送ルールの適用: Webサーバーは、リクエストを受け取ると、docker-compose.ymlで設定されたマッピングに従って、リクエストを内部のDockerコンテナに転送します。このプロセスは、Webサーバーの設定(リバースプロキシの設定など)とdocker-compose.ymlのポートマッピングの組み合わせによって実現されます。

ステップ4: コンテナ内の処理

コンテナ内でのリクエスト処理: Dockerコンテナ内のアプリケーション(この場合、8000番ポートでリッスンしているアプリケーション)はリクエストを受け取り、適切なレスポンスを生成します。

レスポンスの送信: 生成されたレスポンスは、同じ経路を逆にたどってユーザーのブラウザに送り返されます。

例によってchatGPTにレストランに例えてもらった

ステップ1: リクエストの到着 - レストランへの道案内

ドメイン名解決: 顧客(ユーザー)がレストランの住所(URL)を知りたいとき、彼らは案内板(DNS)に問い合わせます。案内板はレストランの住所を具体的な場所(IPアドレス)に変換し、顧客はその場所へ向かいます。

EC2へのリクエスト: 顧客がその場所(EC2インスタンス)に到着します。この場所はあなたが経営するレストランコンプレックスで、様々なレストラン(コンテナ)があります。

ステップ2: EC2インスタンスとWebサーバー - レセプションでの案内

ポートリスニング: レセプション(Webサーバー)は、入り口(80番ポートや443番ポート)で顧客を待ち受けています。

リクエストの受信: レセプションは顧客からの要望(リクエスト)を受け取り、彼らが何を求めているかを理解し、どのレストラン(コンテナ)に案内するかを決定します。

ステップ3: Dockerコンテナへの転送 - レストランへの案内

docker-compose.ymlとポートマッピング: 各レストラン(コンテナ)は特定の入り口(ポート)を持っています。たとえば、日本食レストランは入り口A(80番ポート)から入りますが、中華料理レストランは入り口B(8000番ポート)を使用します。

転送ルールの適用: レセプションは、顧客を適切なレストランへと案内します。これは、レセプションの指示(Webサーバーの設定)とレストランの入り口(ポートマッピング)に基づきます。

ステップ4: コンテナ内の処理 - レストランでのサービス

コンテナ内でのリクエスト処理: 顧客がレストラン(Dockerコンテナ)に到着すると、ウェイター(アプリケーション)が注文を受け、彼らのために料理(レスポンス)を準備します。

レスポンスの送信: 顧客は注文した料理を受け取り、満足してレストランを後にします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0