【2026年版】Docker完全入門|インストールから本番デプロイまで実践的に解説するコンテナ技術ガイド

Dockerはアプリケーションをコンテナと呼ばれる標準化された単位でパッケージ化・実行する技術です。「自分のPCでは動くのに本番環境では動かない」という問題を解決し、現代のソフトウェア開発・デプロイを根本から変えました。

Dockerのインストール

# macOS(Docker Desktopを使用)
brew install --cask docker

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER

# インストール確認
docker --version
docker run hello-world

基本的なDockerコマンド

# イメージの取得
docker pull node:20-alpine

# コンテナの実行
docker run -p 3000:3000 node:20-alpine

# バックグラウンドで実行
docker run -d --name my-app -p 3000:3000 node:20-alpine

# 実行中のコンテナ一覧
docker ps

# すべてのコンテナ一覧
docker ps -a

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

# コンテナの削除
docker rm my-app

# ログの確認
docker logs my-app

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

Dockerfileの書き方

# Node.js アプリケーションのDockerfile例
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.8'

services:
  # Node.jsアプリ
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
      - DATABASE_URL=postgresql://user:pass@db:5432/mydb
    depends_on:
      - db
      - redis

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

  # Redis
  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

  # Nginx(リバースプロキシ)
  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./ssl:/etc/ssl/certs
    depends_on:
      - app

volumes:
  postgres_data:
# docker-composeの主要コマンド
# 起動
docker-compose up -d

# 停止
docker-compose down

# ログ確認
docker-compose logs -f

# 特定サービスの再ビルド
docker-compose up -d --build app

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

  • マルチステージビルド:ビルド環境と実行環境を分けてイメージサイズを削減
  • 非rootユーザーで実行:セキュリティリスクの低減
  • .dockerignore:不要なファイルをビルドコンテキストから除外
  • ヘルスチェック:コンテナの正常稼働を監視
  • 環境変数の管理:シークレット情報はDocker Secretsや外部ツールで管理

Dockerをマスターしてクラウドエンジニアとしてのキャリアを築きたい方はAWSクラウド入門ガイドもご覧ください。

投稿者 kasata

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

コメントを残す

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