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

【2026年版】Docker・Kubernetes完全入門|コンテナ技術の基礎から本番環境デプロイまで

コンテナ技術はなぜエンジニアの必須スキルになったのか

2026年の求人市場では、DockerとKubernetesの知識はバックエンドエンジニア・インフラエンジニアの必須スキルとして定着しています。「自分のマシンでは動いたのに本番では動かない」問題を根本解決するコンテナ技術を、この記事でゼロから習得しましょう。

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

Dockerはアプリケーションをコンテナと呼ばれる軽量な仮想環境で実行する技術です。従来の仮想マシン(VM)と比較してください:

比較項目仮想マシン(VM)Dockerコンテナ
起動時間数分数秒
リソース消費大(OSごと仮想化)小(OSカーネル共有)
ポータビリティ低い高い
イメージサイズ数GB〜数十GB数MB〜数百MB

Dockerの基本コマンド集

# イメージのダウンロード
docker pull nginx:latest

# コンテナの起動(バックグラウンド実行)
docker run -d -p 80:80 --name my-nginx nginx

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

# コンテナの停止
docker stop my-nginx

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

# コンテナの中に入る
docker exec -it my-nginx bash

# 不要なリソースの一括削除
docker system prune -a

Dockerfileの書き方(Node.jsアプリの例)

# ベースイメージ(軽量版のAlpine Linuxを使用)
FROM node:20-alpine

# 作業ディレクトリの設定
WORKDIR /app

# 依存関係ファイルをコピー(キャッシュ効率化)
COPY package*.json ./

# 依存関係のインストール
RUN npm ci --only=production

# アプリケーションコードをコピー
COPY . .

# TypeScriptのビルド
RUN npm run build

# 非rootユーザーで実行(セキュリティ対策)
USER node

# ポートを公開
EXPOSE 3000

# アプリケーションの起動
CMD ["node", "dist/index.js"]

Docker Composeでマルチコンテナ環境を構築

# docker-compose.yml
version: '3.9'

services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/mydb
      - REDIS_URL=redis://cache:6379
    depends_on:
      - db
      - cache
    volumes:
      - .:/app
      - /app/node_modules

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

  cache:
    image: redis:7-alpine
    command: redis-server --maxmemory 256mb

volumes:
  postgres_data:

Kubernetesの基本概念

Kubernetes(K8s)はコンテナのオーケストレーションツールです。複数のDockerコンテナを自動的に管理・スケールします。

K8sの主要オブジェクト

  • Pod:K8sの最小デプロイ単位。1つ以上のコンテナをまとめたもの
  • Deployment:Podの望ましい状態を定義し、自動復旧やローリングアップデートを管理
  • Service:Podへのネットワークアクセスを提供するエンドポイント
  • Ingress:外部からのHTTP/HTTPSトラフィックをServiceにルーティング
  • ConfigMap / Secret:設定値や機密情報をPodに注入

Kubernetesマニフェスト例

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:v1.0.0
        ports:
        - containerPort: 3000
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"
        env:
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: app-secrets
              key: database-url

AWS ECS / Google Cloud Runへのデプロイ

本番環境へのデプロイには、マネージドサービスの活用がおすすめです:

  • AWS ECS (Fargate):サーバーレスコンテナ実行。自動スケーリング対応
  • Google Cloud Run:HTTPリクエスト時のみ課金。小規模サービスに最適
  • Azure Container Apps:KEDA対応のイベント駆動スケーリング

Docker学習ロードマップ2026

  1. Dockerのインストールと基本コマンドの習得(1〜2日)
  2. Dockerfileの作成と最適化(3〜5日)
  3. Docker Composeでマルチコンテナ環境構築(1週間)
  4. Kubernetesの基本概念とkubectlコマンド(2週間)
  5. Helmチャートによるアプリケーション管理(1週間)
  6. CI/CDパイプラインへの組み込み(2週間)

まとめ

DockerとKubernetesはモダンなソフトウェア開発に欠かせないスキルです。本記事のコマンドとマニフェスト例を実際に手を動かして試すことで、コンテナ技術の理解が深まります。まずはDockerのインストールから始め、段階的にKubernetesへとスキルアップを目指しましょう。

投稿者 kasata

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

コメントを残す

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

Click to listen highlighted text!