【2026年版】Dockerコンテナ完全入門!インストールから本番デプロイまでわかりやすく解説

Dockerはアプリケーションをコンテナとして動かす技術で、現代のエンジニアにとって必須スキルです。2026年現在、ほぼすべての企業がDockerを採用しています。本記事では、Dockerの基礎から本番環境へのデプロイまでを解説します。

Dockerとは?仮想マシンとの違い

比較項目Docker(コンテナ)仮想マシン(VM)
起動時間数秒数分
リソース消費少ない(ホストOSを共有)多い(OSを丸ごと持つ)
ポータビリティ高い(どこでも同じ動作)中程度
分離レベルプロセスレベルハードウェアレベル

Dockerのインストール

# macOS(Docker Desktop)
brew install --cask docker

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# バージョン確認
docker --version
docker compose version

Dockerfileの書き方

Node.jsアプリケーションのDockerfileサンプルです。

# Node.js アプリ用 Dockerfile(マルチステージビルド)
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 AS production
WORKDIR /app
ENV NODE_ENV=production
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
EXPOSE 3000
USER node
CMD ["node", "dist/server.js"]

Docker Composeで複数コンテナを管理

# docker-compose.yml(Webアプリ + DB + Redis構成)
version: '3.9'

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/myapp
      - REDIS_URL=redis://redis:6379
    depends_on:
      - db
      - redis
    restart: unless-stopped

  db:
    image: postgres:16-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass

  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data

volumes:
  postgres_data:
  redis_data:

本番デプロイのベストプラクティス

  • 🔒 セキュリティ:rootユーザーではなく専用ユーザーで実行
  • 📦 イメージサイズ削減:マルチステージビルド・alpineベースイメージを使用
  • 🏥 ヘルスチェック:HEALTHCHECKでコンテナの死活監視
  • 📊 ログ管理:stdout/stderrに出力してホストで集約
  • 🔄 再起動ポリシー:restart: unless-stoppedで自動復旧

KubernetesへのステップアップPath

Dockerをマスターしたら、次はKubernetes(K8s)でコンテナオーケストレーションを学びましょう。

  1. Docker基礎(本記事)
  2. Docker Compose習得
  3. Kubernetes基礎(Pod・Service・Deployment)
  4. Helm・ArgoCD(GitOps)
  5. EKS/GKE/AKSでの本番運用

まとめ

Dockerはモダンなソフトウェア開発において欠かせない技術です。本記事の内容を実践することで、「どの環境でも動く」アプリケーションを構築できるようになります。次のステップとしてKubernetes・CI/CDパイプラインの構築も挑戦してみてください。

投稿者 kasata

IT企業でエンジニアとして勤務後、テクノロジー情報メディア「Tech Athletes(テック・アスリート)」を運営。プログラミング、クラウドインフラ(AWS/GCP/Azure)、AI活用、Webサービス開発を専門とする。エンジニア・ビジネスパーソン向けに、実際に使ってみた経験をもとに信頼できる技術情報を発信中。資格:AWS認定ソリューションアーキテクト、Python 3 エンジニア認定試験合格。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です