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

Docker Docker
スポンサーリンク

Day3:Webサーバ起動(実務の入口)後半

テーマ:ポートフォワーディングを“実務レベルで使いこなす”

後半では、前半・中盤で理解したポートフォワーディングを
「実務でどう使うか」「どんなトラブルが起きるか」「どう設計すべきか」
という視点で深掘りします。

ここを押さえると、Docker を使った Web 開発が一気にスムーズになり、
「ポートが開かない」「アクセスできない」という初心者あるあるを完全に回避できます。


ポートフォワーディングの“実務的な設計”を理解する

外部公開するポートは最小限にする

Docker では、-p を使ったポート公開は 外部に向けて扉を開く行為 です。
つまり、セキュリティ的には「必要なポートだけ開ける」が鉄則です。

nginx の場合は 80 番だけで十分です。

docker run -d -p 8080:80 nginx

これにより、
外部からアクセスできるのは 8080 番だけ
という安全な状態になります。


実務でよくある“ポートの衝突”問題を理解する

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

例えば、すでに別のアプリが 8080 番を使っている場合、
次のコマンドはエラーになります。

docker run -d -p 8080:80 nginx

この場合はポートを変えればOKです。

docker run -d -p 8081:80 nginx

どのポートが使われているか確認する方法

実務では「どのポートが空いているか」を把握することが重要です。
Docker では docker ps を使えば、公開中のポートが確認できます。

docker ps

ここに 0.0.0.0:8080->80/tcp のように表示されます。


“アクセスできない”ときのトラブルシューティング

ケース1:ブラウザで nginx が表示されない

原因として最も多いのは ポート番号の勘違い です。

例:
-p 8080:80 で起動したのに、
http://localhost:80 にアクセスしている。

正しくは:

http://localhost:8080

ケース2:コンテナが起動していない

docker ps で確認します。

もし表示されないなら:

docker ps -a

停止している場合は:

docker start コンテナID

ケース3:ポートが他のアプリに占有されている

この場合は、ホスト側のポートを変えるのが最も簡単です。

docker run -d -p 8888:80 nginx

実務で使う“ポート設計のコツ”

1. ホスト側のポートはアプリごとに分ける

nginx → 8080
API → 3000
DB GUI → 8081
など、役割ごとに整理すると混乱しません。

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

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

右側(コンテナ側)はアプリの仕様に従う
というルールを覚えておくと迷いません。

3. 本番環境では 80 / 443 を使う

実務では、
HTTP → 80
HTTPS → 443
が標準です。

開発環境では 8080 や 3000 を使い、
本番では 80 / 443 に切り替えるのが一般的です。


nginx を使った“実務に近い”例

例:静的サイトを公開する

docker run -d -p 8080:80 -v $(pwd)/html:/usr/share/nginx/html nginx

これで、
ホストの html フォルダに置いたファイルが
nginx で公開されます。

ポートフォワーディングとボリュームを組み合わせると、
ローカルで即座に Web サイトを公開できる
という強力な開発環境が作れます。


Day3のゴール達成チェック

あなたは次の質問に答えられますか?

ホスト側とコンテナ側のポートの違いは?
-p 8080:80 の左右は何を意味する?
なぜポートフォワーディングが必要?
ポートが衝突したらどうする?
nginx にアクセスできないときの確認ポイントは?

これらを自分の言葉で説明できれば、
Day3 のゴール「ポートフォワーディングを理解」は完全達成です。

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