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

【2026年版】Docker完全入門ガイド|インストールから本番運用まで初心者向け解説

Dockerはコンテナ型仮想化技術の代表格で、現代のWeb開発・インフラ構築において必須のスキルです。本記事では、Docker初心者から中級者向けに、基本概念から実践的な使い方まで体系的に解説します。

Dockerとは?コンテナ仮想化の基本概念

Dockerは、アプリケーションとその実行環境(ライブラリ、設定ファイルなど)を「コンテナ」と呼ばれる軽量な仮想環境にまとめるツールです。従来の仮想マシン(VM)とは異なり、ホストOSのカーネルを共有するため、起動が高速で軽量です。

仮想マシン vs Dockerの比較

比較項目仮想マシン(VM)Docker
起動時間数分数秒
ディスク使用量数GB〜数十GB数MB〜数百MB
OSオーバーヘッド大(各VMに独立OS)小(ホストOSカーネル共有)
ポータビリティ低い高い
本番環境での採用従来型システムマイクロサービス、クラウド

Dockerのインストール方法

macOS へのインストール

# Homebrew でインストール
brew install --cask docker

# または Docker Desktop の公式サイトからダウンロード
# https://www.docker.com/products/docker-desktop/

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

Ubuntu/Debianへのインストール

# 必要パッケージをインストール
sudo apt-get update
sudo apt-get install 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 chmod a+r /etc/apt/keyrings/docker.gpg

# リポジトリを追加
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker エンジンをインストール
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 権限設定(sudo なしで使えるように)
sudo usermod -aG docker $USER

基本コマンド集【よく使うDockerコマンド】

# イメージの操作
docker pull nginx              # イメージをダウンロード
docker images                  # ローカルイメージ一覧
docker rmi nginx               # イメージを削除
docker image prune             # 未使用イメージを一括削除

# コンテナの操作
docker run -d -p 8080:80 nginx # コンテナをバックグラウンドで起動
docker ps                      # 実行中コンテナ一覧
docker ps -a                   # 全コンテナ一覧(停止済み含む)
docker stop [container_id]     # コンテナを停止
docker rm [container_id]       # コンテナを削除
docker logs [container_id]     # コンテナのログ表示
docker exec -it [id] /bin/bash # コンテナ内でシェル起動

Dockerfileの書き方【実践的なサンプル】

Node.js アプリのDockerfile

# ベースイメージを指定(軽量なalpineを使用)
FROM node:20-alpine

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

# package.json と package-lock.json をコピー(キャッシュ効率のため先にコピー)
COPY package*.json ./

# 依存関係をインストール(本番用のみ)
RUN npm ci --only=production

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

# ポートを公開
EXPOSE 3000

# 非rootユーザーで実行(セキュリティベストプラクティス)
USER node

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

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

実際の開発では、Webサーバー、データベース、キャッシュなど複数のサービスを連携させます。Docker Composeを使うと、これらを一元管理できます。

# docker-compose.yml の例(Node.js + PostgreSQL + Redis)
version: '3.8'

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

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

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

volumes:
  postgres_data:
  redis_data:
# Docker Compose の操作コマンド
docker compose up -d          # 全サービスをバックグラウンドで起動
docker compose down           # 全サービスを停止・削除
docker compose logs -f        # ログをリアルタイムで表示
docker compose ps             # サービスの状態確認
docker compose exec app bash  # appコンテナ内でbashを起動

Dockerのベストプラクティス

  • 軽量なベースイメージを使う:alpineやslim版を選択してイメージサイズを削減
  • マルチステージビルド:ビルド環境と実行環境を分離してイメージを小さく
  • .dockerignoreを使う:不要なファイルをイメージに含めない
  • 非rootユーザーで実行:セキュリティリスクを軽減
  • レイヤーキャッシュを活用:変更頻度の低いファイルを先にCOPY
  • 環境変数で設定を外部化:設定をコードから分離

まとめ

Dockerはモダンな開発・運用に不可欠なツールです。ローカル開発環境の統一、CI/CDパイプラインの構築、本番環境へのデプロイまで、幅広い場面で活躍します。まずは本記事で紹介した基本コマンドから習得し、徐々にDocker Composeや本番向けの設定を学んでいきましょう。

投稿者 kasata

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

コメントを残す

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

Click to listen highlighted text!