Dockerとは
Dockerは、アプリケーションを「コンテナ」という独立した環境で動かす技術。「自分のPCでは動くのに...」という問題を解決します。
Dockerが解決する問題
Dockerなしの場合
- ✗ 「自分のPCでは動くのに、サーバーで動かない」
- ✗ 「Node.jsのバージョンが違う」
- ✗ 「チームメンバーの環境が揃わない」
- ✗ 「MySQLのインストールが面倒」
- ✗ 「WindowsとMacで動作が違う」
Dockerありの場合
- ○ 開発・本番で同じ環境
- ○ バージョンを固定できる
- ○ コマンド1つで環境構築
- ○ MySQLも簡単に起動
- ○ どのOSでも同じ動作
Docker の基本概念
📦
コンテナ(Container)
アプリケーションとその実行環境をまとめた「箱」。軽量で起動が速い。
例:Pythonアプリ + Python 3.11 + 必要なライブラリ = 1つのコンテナ
📋
イメージ(Image)
コンテナの「設計図」。イメージからコンテナを作成する。
例:python:3.11 イメージ → Pythonが入ったコンテナを作成
📝
Dockerfile
イメージを作るための「レシピ」。必要な手順を記述。
例:Pythonイメージ + pip install → カスタムイメージ
🏪
Docker Hub
イメージを共有するためのレジストリ(保管庫)。
例:python, mysql, node などの公式イメージをダウンロード可能
仮想マシン vs Docker
仮想マシン(VM)
App A
Guest OS
App B
Guest OS
Hypervisor
Host OS
- ・OSごとにメモリ消費
- ・起動に数分かかる
- ・数GB〜数十GBのサイズ
Docker
App A
App B
Docker Engine
Host OS
- ・OSを共有(軽量)
- ・起動は数秒
- ・数MB〜数百MBのサイズ
Docker Desktop のインストール
手順
-
1
Docker Desktop をダウンロード
-
2
インストーラーを実行
Windowsの場合はWSL2が必要(インストーラーが案内してくれる)
-
3
Docker Desktop を起動
起動後、タスクバーにクジラのアイコンが表示される
-
4
動作確認
docker --version
注意:Docker Desktopは、一定規模以上の企業での利用は有料です。個人・学習・小規模企業は無料で使えます。
はじめてのコンテナ
Hello Worldコンテナを実行してみましょう。
docker run hello-world
このコマンドは以下を行います:
- 1. hello-worldイメージをDocker Hubからダウンロード
- 2. そのイメージからコンテナを作成
- 3. コンテナ内のプログラムを実行
- 4. 結果を表示して終了
Web開発でのDocker活用
典型的な構成
Frontend
Next.js
Backend
FastAPI
Database
MySQL
各コンポーネントを別々のコンテナで実行
メリット
- ✓ コマンド1つで全環境を起動(docker compose up)
- ✓ MySQLをインストールしなくてもコンテナで動く
- ✓ 本番環境と同じ構成で開発できる
- ✓ チームメンバー全員が同じ環境
まとめ
- ✓ Dockerは「環境の違い」問題を解決する
- ✓ コンテナは軽量で起動が速い
- ✓ イメージ(設計図)からコンテナ(実体)を作る
- ✓ Docker Desktopでローカル環境を構築