Day3:Webサーバ起動(実務の入口)
Day3では、いよいよ「WebサーバをDockerで動かす」という、実務で最もよく使う操作に踏み込みます。
ここを理解すると、Dockerが“ただの箱”ではなく“本番運用にも耐える強力なツール”だと実感できます。
今回の主役は nginx(エンジンエックス) という超有名Webサーバです。
世界中のWebサイトで使われている、軽量で高速なサーバです。
nginxをDockerで起動するとはどういうことか
Webサーバを「箱の中で動かす」イメージ
nginxは本来、Linuxにインストールして設定して…という手順が必要です。
しかしDockerを使うと、インストール作業なしで 一瞬でWebサーバが起動 します。
これは、nginxのイメージ(設計図)に「すぐ動く状態」がすでに詰め込まれているからです。
あなたはただコンテナを作って起動するだけで、Webサーバが立ち上がります。
docker run -d -p 8080:80 nginx の意味を徹底的に分解する
コマンド全体の役割
この一行は、
「nginxコンテナをバックグラウンドで起動し、あなたのPCの8080番ポートからアクセスできるようにする」
という意味です。
ここから、各部分を初心者向けに丁寧に分解します。
-d:バックグラウンドで動かす
画面を占有しないで動かすモード
-d は detached mode(デタッチドモード) の略です。
コンテナを裏側で動かし続け、ターミナルを占有しません。
もし -d を付けないと、nginxのログがずっと画面に流れ続けて、他の操作ができなくなります。
実務ではWebサーバは常に裏で動いていてほしいので、-d はほぼ必須です。
-p 8080:80:ポートフォワーディングの核心
ここがDay3の最重要ポイント
-p 8080:80 は、
「あなたのPCの8080番ポート → コンテナの80番ポート」
という橋渡しを作る設定です。
例え話:建物の入口をつなぐイメージ
あなたのPCを「建物」、コンテナを「別の部屋」と考えてください。
- 建物の入口:8080番
- 部屋の入口:80番(nginxが待ち受けている場所)
-p 8080:80 は、
「建物の入口8080番に来た人を、部屋の入口80番に案内する」
というルールを作ることです。
なぜ必要なのか
コンテナは独立した空間なので、外から直接アクセスできません。
そこで、ポートフォワーディングを使って「外部 → コンテナ内部」への通路を作ります。
実際にアクセスしてみる
コマンドを実行したら、ブラウザで次を開きます。
http://localhost:8080
nginxのウェルカムページが表示されれば成功です。
これが「コンテナの中で動いているWebサーバに、あなたのPCからアクセスできた」という証拠です。
nginxコンテナを起動してみる流れ
実行コマンド
docker run -d -p 8080:80 nginx
起動後に確認する方法
docker ps
nginx が STATUS: Up になっていれば動いています。
停止したいとき
docker stop コンテナID
完全に削除したいとき
docker rm コンテナID
Day2で学んだライフサイクル操作がここで活きます。
ポートフォワーディングをさらに深掘りする
なぜ「8080:80」の順番なのか
左側が ホスト(あなたのPC)
右側が コンテナ(nginx)
順番を逆にすると動きません。
これは実務でもよくあるミスです。
80番ポートとは何か
Webサーバが「HTTP通信を受け付ける標準の入口」です。
nginxはデフォルトで80番を使うように設定されています。
8080番を使う理由
あなたのPCの80番ポートは、別のアプリが使っている可能性があります。
8080は「Web開発でよく使われる代替ポート」で、衝突しにくいから選ばれています。
実務での応用イメージ
1. ローカルでWebアプリを動かす
フロントエンドやバックエンドの開発者は、
Dockerでnginxを立ち上げてローカル環境を再現します。
2. 本番環境の構築
本番サーバでも、nginxコンテナを起動してWebサービスを提供できます。
Dockerなら環境差異がないため、ローカルと本番がほぼ同じ動作になります。
3. セキュリティ面のメリット
コンテナは隔離されているため、
万が一nginxに脆弱性があっても、被害が広がりにくい構造になっています。
Day3のまとめ
Day3では、DockerでWebサーバを起動するという実務的な操作を学びました。
nginxをコンテナで動かし、
-d で裏で動かし、
-p 8080:80 で外部からアクセスできるようにする。
特に ポートフォワーディングの理解はDockerの基礎中の基礎 です。
ここを押さえると、今後のDocker Composeや複数コンテナ連携もスムーズに理解できます。
