Welcome to Tech Athletes | テック・アスリート   Click to listen highlighted text! Welcome to Tech Athletes | テック・アスリート

Docker・Kubernetes完全入門2026|環境構築から本番運用まで現役エンジニアが徹底解説

「コンテナ技術を勉強したいけど、DockerとKubernetesって何が違うの?」「本番環境への適用方法がわからない」という方へ。本記事ではDockerの基本からKubernetesの本番運用まで、現役エンジニアが実務で使える知識を体系的に解説します。

Dockerとは?コンテナ技術の基礎

Dockerは、アプリケーションとその依存関係を「コンテナ」という軽量な実行単位にパッケージ化するプラットフォームです。「開発環境では動くのに本番環境で動かない」という問題を解決し、どこでも同じ環境でアプリケーションを実行できます。

仮想マシン vs コンテナの違い

比較項目仮想マシン(VM)コンテナ(Docker)
起動時間数分数秒
リソース消費大(GB単位)小(MB単位)
OS完全なOSを含むホストOSのカーネルを共有
ポータビリティ低い非常に高い
セキュリティ隔離強いやや弱い

Dockerの基本コマンド集

Dockerを使いこなすために、まず必須コマンドを覚えましょう。

# イメージの取得
docker pull nginx:latest

# コンテナの起動
docker run -d -p 8080:80 --name my-nginx nginx:latest

# 実行中コンテナの確認
docker ps

# コンテナのログ確認
docker logs my-nginx

# コンテナ内でコマンド実行
docker exec -it my-nginx bash

# コンテナの停止・削除
docker stop my-nginx
docker rm my-nginx

# イメージのビルド(Dockerfileから)
docker build -t my-app:1.0 .

Dockerfileの書き方ベストプラクティス

効率的な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 AS production
WORKDIR /app

# セキュリティ: 非rootユーザーで実行
RUN addgroup -S appgroup && adduser -S appuser -G appgroup

COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules

USER appuser
EXPOSE 3000

HEALTHCHECK --interval=30s --timeout=3s \
  CMD wget -qO- http://localhost:3000/health || exit 1

CMD ["node", "dist/main.js"]

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

実際のWebアプリケーションは、フロントエンド・バックエンド・データベースなど複数のサービスで構成されます。Docker Composeを使うと、これらを一元管理できます。

# docker-compose.yml の例
version: "3.9"

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DATABASE_URL=postgresql://user:pass@db:5432/mydb
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped

  db:
    image: postgres:15-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U user -d mydb"]
      interval: 10s
      timeout: 5s
      retries: 5

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./ssl:/etc/ssl:ro
    depends_on:
      - app

volumes:
  postgres_data:

Kubernetesとは?なぜ必要なのか

Kubernetes(K8s)は、Googleが開発したコンテナオーケストレーションシステムです。複数のDockerコンテナを自動でスケーリング・負荷分散・障害回復する本番運用に不可欠なプラットフォームです。

Kubernetesの主要コンポーネント

  • Pod:最小デプロイ単位。1つ以上のコンテナをまとめたもの
  • Deployment:Podのレプリカ管理・ローリングアップデート
  • Service:Podへのネットワークアクセスを提供(ClusterIP/NodePort/LoadBalancer)
  • Ingress:外部からのHTTP/HTTPSトラフィックをルーティング
  • ConfigMap / Secret:設定情報・機密情報の管理
  • PersistentVolume:永続ストレージの管理

Kubernetes マニフェストの書き方

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  labels:
    app: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:1.0
        ports:
        - containerPort: 3000
        resources:
          requests:
            cpu: "100m"
            memory: "128Mi"
          limits:
            cpu: "500m"
            memory: "512Mi"
        livenessProbe:
          httpGet:
            path: /health
            port: 3000
          initialDelaySeconds: 30
          periodSeconds: 10

クラウドサービス別Kubernetes環境

サービスプロバイダー特徴月額目安
GKE(Google Kubernetes Engine)Google Cloud最も安定。Autopilotモードあり$72〜
EKS(Elastic Kubernetes Service)AWSAWSサービスとの高い親和性$73〜
AKS(Azure Kubernetes Service)Microsoft Azureコントロールプレーンが無料$0〜(ノード代別)

まとめ:コンテナ技術習得のロードマップ

  1. Docker基礎(1週間):インストール、基本コマンド、Dockerfileの書き方
  2. Docker Compose(1〜2週間):複数コンテナの管理、ネットワーク設定
  3. Kubernetes基礎(1ヶ月):minikubeでローカル環境構築、基本リソースの理解
  4. 本番Kubernetes(2〜3ヶ月):クラウドK8s、CI/CD連携、監視・ロギング

コンテナ技術の習得は、現代のエンジニアにとって必須スキルです。まずDockerから始めて、徐々にKubernetesへとステップアップしていきましょう。クラウドネイティブな開発スキルを身につけることで、転職市場での価値も大きく向上します。

投稿者 kasata

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

コメントを残す

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

Click to listen highlighted text!