【2026年最新】Docker完全入門ガイド|インストールから本番運用まで実践的に解説

この記事でわかること: Dockerの基本概念からインストール方法(Mac/Linux)、Dockerfile作成、Docker Compose、本番運用のベストプラクティスまで、エンジニアが現場で使える実践的なDockerの使い方を網羅的に解説します。

Dockerとは何か?仮想化との違いを理解する

Dockerは2013年に登場したコンテナ型の仮想化プラットフォームです。従来のVMware・VirtualBoxなどの仮想マシン(VM)と異なり、OSカーネルを共有するため、軽量・高速・ポータブルな環境構築が可能です。

比較項目仮想マシン(VM)Dockerコンテナ
起動速度数分数秒
ディスク使用量数GB〜数十GB数MB〜数百MB
ポータビリティ低い非常に高い
本番環境との一致性

Dockerのインストール方法(Mac / Linux)

Mac へのインストール

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

# インストール確認
docker --version
# Docker version 27.x.x, build xxxxxxx

Linux(Ubuntu)へのインストール

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

# Dockerインストール
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イメージをダウンロードdocker pull nginx:latest
docker runコンテナを起動docker run -d -p 80:80 nginx
docker ps起動中コンテナ一覧docker ps -a
docker stopコンテナを停止docker stop コンテナID
docker execコンテナ内でコマンド実行docker exec -it コンテナID bash
docker buildイメージをビルドdocker build -t myapp:1.0 .

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
RUN addgroup -g 1001 -S nodejs && adduser -S nextjs -u 1001
WORKDIR /app
COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
USER nextjs
EXPOSE 3000
CMD ["node_modules/.bin/next", "start"]

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

version: '3.8'

services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
      - cache

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

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

volumes:
  postgres_data:
  redis_data:

本番環境でのDockerベストプラクティス

  • 非rootユーザーで実行:セキュリティリスクを最小化するため、root以外のユーザーでプロセスを動かす
  • イメージを最小化:alpine系の軽量イメージを使用し、不要なパッケージを含めない
  • レイヤーキャッシュを活用:変更頻度の低いレイヤー(依存関係)を先に記述してビルドを高速化
  • .dockerignoreを設定:node_modules、.gitなどをイメージに含めない
  • ヘルスチェックを設定:コンテナの健全性を監視して自動回復できるようにする

まとめ

Dockerは現代のバックエンドエンジニア・インフラエンジニアにとって必須のスキルです。基本コマンド・Dockerfile・Docker Composeをマスターして、本番環境での活用を目指しましょう。次のステップとしてKubernetes(K8s)への移行も検討してみてください。

投稿者 kasata

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

コメントを残す

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