Docker | 2週間で実務レベルに到達するDocker学習:Webサーバ起動(実務の入口) - Day3

Docker Docker
スポンサーリンク

Day3:Webサーバ起動(実務の入口)中盤

テーマ:ポートフォワーディングを“図で理解し、応用できる状態”にする

前半では docker run -d -p 8080:80 nginx の意味を分解しました。
中盤では、ポートフォワーディングを頭の中で“見える化”し、他のアプリにも応用できるようにすることが目的です。

Dockerを実務で使うとき、
「どのポートをどこに繋ぐか」
を理解していないと必ずつまずきます。
ここをしっかり押さえると、Webアプリ開発が一気にスムーズになります。


ポートフォワーディングを“図”として理解する

ホストとコンテナの関係を視覚化する

-p 8080:80 は、次のような橋を作っています。

あなたのPC(ホスト)
   ↓ 8080番ポート
Dockerの橋(ポートフォワーディング)
   ↓ 80番ポート
nginxコンテナ(Webサーバ)

つまり、
ホストの 8080 → コンテナの 80
という一方通行のルートが作られます。

ブラウザで http://localhost:8080 にアクセスすると、
この橋を通って nginx に届きます。


なぜポートフォワーディングが必要なのか

コンテナの中は“外から見えない”から

コンテナは独立した世界です。
そのため、コンテナの中で nginx が 80 番で待っていても、
ホスト側からは見えません。

例えるなら、
マンションの部屋の中で音楽を流しても、外からは聞こえない
という状態です。

そこで Docker が「ドア」を作ります。
そのドアが -p 8080:80 です。


ポート番号の左右の意味を深掘りする

左:ホスト側のポート

8080:80 の左側(8080)は、
あなたのPCのポート番号 です。

ブラウザはここにアクセスします。

右:コンテナ側のポート

右側(80)は、
コンテナの中でアプリが待っているポート番号 です。

nginx はデフォルトで 80 番で動くため、
80 を指定します。


例題:ポート番号を変えるとどうなるか

例1:ホスト側のポートを変える

docker run -d -p 5000:80 nginx

この場合、アクセス先は:

http://localhost:5000

nginx はコンテナ内で 80 番のままですが、
ホスト側の入り口を 5000 に変えた形です。

例2:コンテナ側のポートを変える

アプリによっては、コンテナ内で 3000 番で動くものもあります。

docker run -d -p 8080:3000 myapp

この場合、
ホスト8080 → コンテナ3000
という橋が作られます。


nginx 以外のアプリにも応用できる

Node.js アプリの例

Node.js アプリがコンテナ内で 3000 番で動くなら:

docker run -d -p 3000:3000 my-node-app

Python Flask の例

Flask が 5000 番で動くなら:

docker run -d -p 5000:5000 my-flask-app

React の開発サーバの例

React が 5173 番で動くなら:

docker run -d -p 5173:5173 my-react-app

ポートフォワーディングの仕組みを理解すれば、どんなアプリでも外部公開できる
ということです。


ポートフォワーディングの“実務的な注意点”

1. ホスト側のポートは重複できない

すでに 8080 番を使っているアプリがある場合、
同じ 8080 を使うとエラーになります。

その場合は別のポートを使います。

docker run -d -p 8081:80 nginx

2. コンテナ側のポートはアプリに合わせる

nginx は 80
Node.js は 3000
Flask は 5000
React は 5173

アプリがどのポートで動くかを理解することが重要です。


中盤まとめ(ここまでで理解すべきこと)

  • -p 8080:80 は「ホスト8080 → コンテナ80」の橋
  • コンテナの中は外から見えないため、ポートフォワーディングが必要
  • 左がホスト、右がコンテナ
  • ポート番号を変えるとアクセス先が変わる
  • nginx 以外のアプリにも応用できる
  • ホスト側のポートは重複できない
  • コンテナ側のポートはアプリに合わせる

ここまで理解できれば、
ポートフォワーディングの“仕組み”は完全に掴めています。

Docker
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました