👻

苦手だった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