現場実践|Docker・コンテナ入門

Docker入門|インフラエンジニアが知っておくべきコンテナの仕組みとDockerfileの書き方

「Dockerって何?」「なぜコンテナが必要なの?」——インフラエンジニアがDockerとコンテナを理解するための基礎知識・Dockerfileの書き方・docker-composeを使ったローカル開発環境構築まで実践的に解説します。

読了目安:約15分更新日:2026年4月

💡 コンテナは「アプリの実行環境をパッケージ化して、どこでも同じように動かす技術」。Dockerを理解することはECS・Kubernetes・GitHub Actionsを理解するための必須前提知識です。

この記事を書いた人
現役ITエンジニア・IT講師(経験14年)
CCNA・CCNP 取得LPIC-1 保有SES現場を複数経験

Dockerを使ったコンテナ環境の設計・運用を複数案件で担当してきた立場から解説します。

1. コンテナとVMの違い

仮想マシン(VM)コンテナ
分離レベルOSレベル(各VMに独立したOS)プロセスレベル(ホストOSのカーネルを共有)
起動時間数十秒〜数分数秒以内
リソース効率1VMあたり数GB以上のオーバーヘッド最小数MBから動作可能
ポータビリティVMイメージは大きく移動が重いイメージはレイヤー差分管理で軽量

2. Dockerfileの書き方

# マルチステージビルドの例(Node.jsアプリ)
# ビルドステージ
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build

# 実行ステージ(軽量イメージ)
FROM node:20-alpine
WORKDIR /app
# rootユーザーを避けてnodeユーザーで実行
USER node
COPY --from=builder --chown=node:node /app/dist ./dist
COPY --from=builder --chown=node:node /app/node_modules ./node_modules
EXPOSE 3000
CMD ["node", "dist/index.js"]

マルチステージビルドを使うとビルドツールを含まない軽量な本番イメージが作れます。セキュリティと性能の観点から本番環境では必ず使うことを推奨します。

3. docker-composeでローカル開発環境を構築

version: "3.9"
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=development
      - DB_HOST=db
    depends_on:
      - db
    volumes:
      - ./src:/app/src  # ホットリロード用

  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: myapp
    volumes:
      - db-data:/var/lib/mysql

volumes:
  db-data:

4. よく使うDockerコマンド

# イメージのビルド
docker build -t my-app:latest .

# コンテナの起動
docker run -p 3000:3000 --name my-app my-app:latest

# 実行中のコンテナに入る
docker exec -it my-app sh

# コンテナとイメージの一括削除
docker system prune -a
📌 この記事のポイント
  • コンテナはVMより軽量・高速・ポータブル。Dockerはコンテナをビルド・実行・管理するデファクトスタンダードツール
  • マルチステージビルドで軽量な本番イメージを作成・非rootユーザーで実行がセキュリティのベストプラクティス
  • docker-composeでapp+DBのローカル開発環境を1コマンドで起動できる

キャリアの疑問、一緒に解決しませんか?

Route Bloomでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。

※Dockerのバージョンにより構文が異なります。

ABOUT ME
たから
サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営