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

【2026年版】Docker完全入門ガイド|コンテナ技術の基礎からdocker-compose実践まで徹底解説

Dockerはモダンなソフトウェア開発に欠かせないコンテナ技術です。本記事では、Docker初心者から中級者向けに、基礎概念から実践的な使い方まで体系的に解説します。

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

Dockerは、アプリケーションとその依存関係を「コンテナ」という軽量な実行環境にパッケージ化するプラットフォームです。従来の仮想マシン(VM)とは異なり、ホストOSのカーネルを共有するため、起動が速く、リソース効率が高いのが特徴です。

Dockerの主要コンポーネント

  • Dockerイメージ:アプリケーションの実行環境を定義した読み取り専用のテンプレート
  • Dockerコンテナ:イメージから作成された実行中のインスタンス
  • Dockerfile:イメージを構築するための設定ファイル
  • Docker Hub:イメージを公開・共有するクラウドレジストリ
  • docker-compose:複数コンテナを定義・管理するツール

Dockerのインストール方法(Mac・Windows・Linux対応)

Mac(Apple Silicon / Intel)

公式サイト(Docker Desktop)からインストーラーをダウンロードするのが最も簡単です。Apple SiliconとIntel両対応版が提供されています。

# Homebrewを使ったインストール(推奨)
brew install --cask docker

# インストール確認
docker --version
docker compose version

Ubuntu / Debian系Linux

# 必要パッケージのインストール
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg

# DockerのGPGキーを追加
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# リポジトリの追加してインストール
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# sudo なしで使えるようにする
sudo usermod -aG docker $USER

Dockerの基本コマンド一覧

コマンド説明
docker pull [image]イメージをダウンロード
docker run [image]コンテナを起動
docker ps実行中のコンテナ一覧
docker ps -a全コンテナ一覧(停止含む)
docker stop [id]コンテナを停止
docker rm [id]コンテナを削除
docker imagesイメージ一覧
docker rmi [image]イメージを削除
docker build -t [name] .Dockerfileからイメージをビルド
docker logs [id]コンテナのログを表示
docker exec -it [id] bash実行中コンテナに接続

Dockerfileの書き方:本番環境でも使える実践サンプル

DockerfileはDockerイメージの設計図です。Node.jsアプリケーションを例に、本番環境でも使える実践的なDockerfileの書き方を紹介します。

# ベースイメージ(軽量なAlpine版を使用)
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

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

# セキュリティ:root以外のユーザーで実行
RUN addgroup -g 1001 -S nodejs && adduser -S nextjs -u 1001
USER nextjs

EXPOSE 3000
CMD ["node", "dist/index.js"]

docker-composeで複数コンテナを管理する

本番のWebアプリは通常、Webサーバー・アプリケーション・データベースなど複数のサービスで構成されます。docker-composeを使うと、これらを一括管理できます。

version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgresql://user:password@db:5432/mydb
      - REDIS_URL=redis://redis:6379
    depends_on:
      db:
        condition: service_healthy
    restart: unless-stopped

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

  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data
    restart: unless-stopped

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - app
    restart: unless-stopped

volumes:
  postgres_data:
  redis_data:

Dockerのベストプラクティス10選

  1. マルチステージビルドを使う:ビルド用と実行用でイメージを分けてサイズを削減
  2. 軽量なベースイメージを選ぶ:alpine系を使うことで数十MBに抑えられる
  3. .dockerignoreを設定する:不要なファイルのコピーを防ぐ
  4. root以外のユーザーで実行する:セキュリティリスクを最小化
  5. レイヤーキャッシュを活用する:変更頻度の低いものから順にCOPYする
  6. ヘルスチェックを設定する:コンテナの動作状態を監視できる
  7. シークレットは環境変数で管理:Docker Secretsの活用
  8. ログはstdout/stderrに出力:Dockerのログ管理機能を活用
  9. イメージにはタグを明示する:latestは使わず具体的なバージョンを指定
  10. 定期的にイメージを更新する:セキュリティパッチを適用

Docker関連おすすめツール・サービス

  • Portainer:GUIでDockerコンテナを管理できるWebUI(無料プランあり)
  • Lazydocker:ターミナル上でDockerを管理するTUIツール
  • Dive:Dockerイメージのレイヤー構造を解析するツール
  • Trivy:コンテナイメージの脆弱性スキャナー(AquaSecurity製)
  • Docker Scout:Docker公式の脆弱性スキャン・分析ツール

まとめ:DockerはエンジニアのMust-Haveスキル

Dockerは現代のソフトウェア開発において欠かせないスキルとなっています。「自分のマシンでは動くのに本番で動かない」という問題を根本から解決し、開発・テスト・本番環境の一致を保証します。

本記事で紹介した内容をマスターすれば、就職・転職活動でも大きなアドバンテージになります。まずはdocker runで既存のイメージを動かすことから始め、徐々にDockerfile作成、docker-compose活用へとステップアップしていきましょう。

DockerをマスターしたらKubernetes(K8s)へと進むのがエンジニアとしての王道ルートです。ぜひチャレンジしてみてください!

投稿者 kasata

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

コメントを残す

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

Click to listen highlighted text!