苦手だったDockerとついに向き合った
はじめに
Docker、正直ずっと苦手でした😭
「仮想環境が動く?」「Docker Desktop?とりあえず入れろって?」
今回苦手意識のあったDockerと向き合い、やっとつながった感覚が出てきたので、この記事にまとめます🔥
この記事では、
- Dockerとは何か、そもそも仮想環境ってなに?
- Docker / Docker Compose / Docker Desktop の関係性
- イメージとコンテナの違い
- なぜ開発環境で使うのか
を、初学者の自分目線でわかりやすく説明していきます。
🎁 Dockerを使うメリット
- ✅ ローカルPCの環境差をなくせる(誰でも同じDockerfileから同じ環境が作れる)
- ✅ Laravel + nginx + MySQL のような構成を1コマンドで起動できる
- ✅ 本番に近い環境をローカルに再現できる
- ✅ ローカルの環境構築でハマる時間が減る(npmのバージョン違い、MySQLのバージョン違いなど)
💻 そもそも「仮想環境」って?
仮想環境とは、1台のPCの中に「別のPCを動かす」ような仕組みです。
🧠 例えるなら…
1台のパソコンの中に、別のパソコンを作って、その中で別のOSやアプリを動かせる仕組み
🏋️♀️ 普通の仮想マシン(VM)は重い
- OS全体を丸ごと動かす(カーネルも含めて)
- リソース(CPU・メモリ)もたくさん使う
🧱 コンテナ型仮想環境とは?
Dockerのような「コンテナ型仮想環境」は、OSの一部だけ(ユーザー空間)を分けて動かす仕組みです。
🧠 超ざっくり言うと…
「OSの中にフォルダだけ借りて、その中でアプリを隔離して動かす」みたいな感じ
✅ ホストOSのカーネル(中枢)を使い回すから軽い!
✅ VMよりも起動が速く、リソースも節約できる!
🏎️ イメージとコンテナの違い(車で例える)
- イメージ:まだ走ってない車(設計図と部品が揃った状態)
- コンテナ:その車にエンジンをかけて走り出した状態
イメージは「このアプリを動かすにはこんな環境が必要だよ」というレシピや設計図。
そして、そのイメージから実際に環境を起動したものがコンテナです。
イメージ = アプリの準備セット(動かす前)
コンテナ = 実際に動いてるアプリ環境(動かした後)
🖥️ Docker Desktopって何?
MacやWindowsでは、Linuxと違ってそのままではDockerが動きません。
そこで登場するのが Docker Desktop。
Docker Desktopをインストールすると、
- Dockerエンジン(Dockerを動かす本体)
-
Linux仮想マシン(VM)(※ MacやWindowsでもLinux用の環境が使えるように)
をまとめて用意してくれます。
🧠 実はMacの中に「Linuxの小さなPC」が1台起動して、その中でDockerが動いています。
しかもGUIで操作もできて、初心者にやさしい。便利ですね!
⚙️ Docker Composeって何?
Docker Compose は、複数のコンテナをまとめて起動・設定するためのツールです。
たとえばLaravelの開発では、
- Webサーバー(nginx)
- アプリサーバー(PHP-FPM)
- データベース(MySQL)
など複数のサービスが必要になります。
これらを1つずつ docker run
で起動するのはめんどくさい。
→ docker-compose.yml
という設定ファイルにまとめておけば、
docker compose up -d
と1コマンドで全部起動できます!
🧠 ymlファイルに「どんなコンテナを、どんな設定で動かすか」を書いておく
🔗 Docker の全体構成まとめ
- Docker Desktop:MacやWindows上でDockerを動かす土台(GUIも付属)
- Linux VM:Dockerが動くための小さなLinux
- Docker Engine:Dockerコマンドの実行本体
- Docker Compose:複数のコンテナの一括制御
📝 まとめ
用語 | 説明 |
---|---|
Docker | 軽量な仮想環境を作ってアプリを動かす仕組み |
イメージ | アプリの設計図や環境一式(まだ動いていない) |
コンテナ | イメージを起動した状態(アプリが動いている) |
Docker Desktop | DockerをMac/Windowsで動かすためのツールセット(GUI付き) |
Docker Compose | 複数コンテナをまとめて管理する仕組み(ymlで設定) |
🔚 おわりに
正直、最初は「Dockerってなんか難しそう」って思ってました。
でもイメージとコンテナの違いがスッと腑に落ちて、Docker DesktopがLinuxの仮想PCを動かしてるって知って、やっと全体像が見えてきました🌟
より理解を深めるために、
実際にコンテナを立ち上げてDockerの環境構築をしてみましょう!
ご意見・補足・修正リクエストも大歓迎です!
Discussion