Dockerとは何か?初心者でも分かるコンテナ技術の基礎
「Dockerって聞くけど、何がそんなに便利なの?」「仮想マシンと何が違うの?」こんな疑問を持っている方も多いのではないでしょうか。本記事では、Docker初心者の方向けに、実際の使用例を交えながら基礎から実践まで分かりやすく解説します。
Dockerが解決する問題
開発現場でよくある「俺の環境では動くのに…」問題。Dockerはまさにこれを解決するツールです。
従来の問題点
- 開発環境と本番環境の差異によるバグ
- 新しいメンバーの環境構築に丸一日かかる
- 「PHP 7.4で動かしてたけど、本番は8.0だった」という事故
- 複数プロジェクトで異なるバージョンの言語やDBが必要
Dockerがもたらす解決策
- 環境の完全な再現性:どこでも同じ環境で動作
- 高速な環境構築:コマンド一つで環境が立ち上がる
- リソースの効率化:仮想マシンより軽量
- 環境の使い捨て:不要になったらすぐ削除、クリーンな状態を維持

初めてDockerを使ったとき、環境構築が30秒で終わって感動しました。それまで新人さんの環境構築に丸一日付き合っていたのが嘘みたいです。今では開発環境は全部Docker化しています。
Dockerの基本概念を理解する
3つの重要な要素
要素 | 説明 | 例え |
---|---|---|
イメージ | アプリケーションの設計図 | クッキーの型 |
コンテナ | イメージから作られた実行環境 | 型で作ったクッキー |
Dockerfile | イメージの作り方を書いたレシピ | クッキーのレシピ |
Dockerのインストール(各OS別)
macOS
# Homebrewを使用
brew install docker
brew install docker-compose
# Docker Desktopをインストール(GUI付き)
# https://www.docker.com/products/docker-desktop/ からダウンロード
Ubuntu/Debian
# 公式インストールスクリプト
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# ユーザーをdockerグループに追加(sudo不要にする)
sudo usermod -aG docker $USER
# Docker Composeのインストール
sudo apt update
sudo apt install docker-compose-plugin
Windows(WSL2推奨)
# WSL2をインストール後
wsl --install
# Docker Desktop for Windowsをインストール
# https://www.docker.com/products/docker-desktop/ からダウンロード
最初の一歩:Hello Worldを動かす
# Dockerが正しくインストールされているか確認
docker --version
# 初めてのコンテナを実行
docker run hello-world
# nginxサーバーを起動してみる
docker run -d -p 8080:80 nginx
# ブラウザで http://localhost:8080 にアクセス
実践:WordPressを5分で立ち上げる
Docker Composeを使えば、WordPress + MySQLの環境が数分で構築できます。
docker-compose.ymlの作成
version: '3.8'
services:
db:
image: mysql:8.0
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
- ./wp-content:/var/www/html/wp-content
volumes:
db_data:
起動コマンド
# docker-compose.ymlがあるディレクトリで実行
docker-compose up -d
# 起動確認
docker-compose ps
# ログを見る
docker-compose logs -f
# 停止
docker-compose down
# データも含めて削除(やり直したいとき)
docker-compose down -v
これだけで http://localhost:8000 でWordPressが使えるようになります。

昔はWordPressの環境構築にMAMPやXAMPPを使っていましたが、Dockerを使うようになってから圧倒的に楽になりました。特に複数のプロジェクトを並行して開発する時は、ポート番号を変えるだけで済むので便利です。
よく使うDockerコマンド集
イメージ操作
# イメージ一覧
docker images
# イメージをダウンロード
docker pull ubuntu:22.04
# 不要なイメージを削除
docker rmi イメージID
# 使われていないイメージを一括削除
docker image prune -a
コンテナ操作
# 実行中のコンテナ一覧
docker ps
# 停止中も含めた全コンテナ一覧
docker ps -a
# コンテナを起動
docker start コンテナID
# コンテナを停止
docker stop コンテナID
# コンテナに入る(デバッグ時に便利)
docker exec -it コンテナID /bin/bash
# コンテナのログを見る
docker logs -f コンテナID
# 停止中のコンテナを一括削除
docker container prune
Dockerfileの基本:自分だけの環境を作る
Node.jsアプリケーション用のDockerfileの例:
# ベースイメージを指定
FROM node:18-alpine
# 作業ディレクトリを設定
WORKDIR /app
# package.jsonをコピー
COPY package*.json ./
# 依存関係をインストール
RUN npm ci --only=production
# アプリケーションのソースコードをコピー
COPY . .
# アプリケーションが使うポートを公開
EXPOSE 3000
# アプリケーションの起動コマンド
CMD ["node", "index.js"]
ビルドと実行
# イメージをビルド
docker build -t my-node-app .
# コンテナとして実行
docker run -p 3000:3000 my-node-app
開発環境でのDockerベストプラクティス
1. .dockerignoreを使う
# .dockerignore
node_modules
npm-debug.log
.git
.env
.DS_Store
*.log
2. マルチステージビルドで軽量化
# マルチステージビルドの例
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]
3. ボリュームマウントで開発効率UP
# 開発時はソースコードをマウント
docker run -v $(pwd):/app -p 3000:3000 my-app
# docker-compose.ymlでの設定
services:
app:
volumes:
- .:/app
- /app/node_modules # node_modulesは除外
トラブルシューティング
よくある問題と解決法
問題 | 解決法 |
---|---|
ポートが既に使用中 | lsof -i:ポート番号 で確認して停止 |
ディスク容量不足 | docker system prune -a で不要なデータ削除 |
権限エラー(Linux) | ユーザーをdockerグループに追加 |
コンテナが起動しない | docker logs コンテナID でエラー確認 |
次のステップ:学習リソース
Dockerの基本を理解したら、以下のトピックを学習することをおすすめします:
- Docker Compose:複数コンテナの管理(WireGuard + AdGuardHomeの記事でも活用)
- Kubernetes:本番環境でのコンテナオーケストレーション
- CI/CD統合:GitHub ActionsやGitLab CIでのDocker活用
- セキュリティ:コンテナのセキュリティベストプラクティス
まとめ:Dockerで開発効率を劇的に向上させる
Dockerは最初は少し難しく感じるかもしれませんが、一度理解すれば開発効率が劇的に向上します。特に以下のメリットは大きいです:
- 環境構築の時間短縠:数時間→数分に
- 環境差異によるバグの削減:「動かない」問題がなくなる
- チーム開発の効率化:全員が同じ環境で開発
- 本番環境との一致:開発と本番の差異を最小化

Dockerを導入してから、「環境構築で詰まる」ということがほぼなくなりました。特にAlmaLinuxとDebianの比較記事で触れたような、OSレベルの違いも吸収できるのが素晴らしいです。今では必須ツールですね。
まずは簡単なWebサーバーやデータベースをDockerで動かしてみることから始めてみてください。慣れてきたら、自分のプロジェクトをDocker化してみると、その便利さを実感できるはずです。