Dockerとは?コンテナ技術の基礎を理解する
Docker(ドッカー)は、アプリケーションをコンテナと呼ばれる独立した環境にパッケージ化して実行するためのプラットフォームです。2026年現在、クラウドネイティブ開発の標準ツールとして、世界中のエンジニアが日常的に使用しています。
本記事では、Dockerの基礎概念から実践的な本番運用まで、初心者でも理解できるよう丁寧に解説します。
Dockerを使うメリット
Dockerを活用することで、以下のような大きなメリットを得られます。
- 環境の統一化:「自分のPCでは動くのに本番で動かない」問題を解消できます
- 高速なデプロイ:コンテナイメージとして配布・起動が数秒で完了します
- リソース効率:仮想マシンと比較してオーバーヘッドが少なく、複数のサービスを効率的に稼働できます
- スケーラビリティ:Kubernetesと組み合わせることで柔軟なスケールアウトが可能です
Dockerのインストール方法(2026年最新版)
DockerはWindows・Mac・Linux全てのOSに対応しています。公式サイト(docker.com)からDocker Desktopをダウンロードしてインストールするのが最も簡単です。
Linuxへのインストール(Ubuntu/Debian)
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker $USER
基本コマンド一覧
イメージの操作
# イメージをダウンロード
docker pull nginx:latest
# ローカルのイメージ一覧を確認
docker images
# イメージを削除
docker rmi nginx:latest
コンテナの操作
# コンテナを起動(フォアグラウンド)
docker run -it ubuntu:22.04 bash
# コンテナをバックグラウンドで起動
docker run -d -p 80:80 --name my-nginx nginx
# 起動中のコンテナ一覧
docker ps
# コンテナを停止・削除
docker stop my-nginx
docker rm my-nginx
Dockerfileの書き方
Dockerfileは、カスタムDockerイメージを定義するための設計書です。以下に、Node.jsアプリケーション用の実践的なDockerfileの例を示します。
# ベースイメージの指定
FROM node:20-alpine
# 作業ディレクトリの設定
WORKDIR /app
# 依存パッケージのインストール(キャッシュ効率化)
COPY package*.json ./
RUN npm ci --only=production
# アプリケーションのコピー
COPY . .
# 非rootユーザーで実行(セキュリティ対策)
USER node
# ポートの公開
EXPOSE 3000
# 起動コマンド
CMD ["node", "server.js"]
Docker Composeで複数コンテナを管理する
実際のWebアプリケーション開発では、フロントエンド・バックエンド・データベースなど複数のサービスを組み合わせます。Docker Composeを使えば、これらをまとめて管理できます。
version: '3.9'
services:
app:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DB_HOST=db
depends_on:
- db
db:
image: postgres:16
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_DB: myapp
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
postgres_data:
本番環境でのDockerベストプラクティス
1. マルチステージビルドでイメージサイズを削減
# ビルドステージ
FROM node:20 AS builder
WORKDIR /app
COPY . .
RUN npm ci && npm run build
# 実行ステージ
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/server.js"]
2. ヘルスチェックの設定
HEALTHCHECK --interval=30s --timeout=3s CMD wget -qO- http://localhost:3000/health || exit 1
3. セキュリティスキャンの実施
Dockerイメージの脆弱性スキャンにはDocker ScoutやTrivyが有効です。定期的にイメージをスキャンして、既知の脆弱性を早期に発見・修正しましょう。
# Trivyでイメージをスキャン
trivy image my-app:latest
まとめ:Dockerで開発効率を最大化しよう
Dockerはモダンな開発・運用において欠かせないツールです。本記事で解説した基本コマンドからDockerfile作成、Docker Compose、本番運用まで段階的に習得することで、開発効率を大幅に向上させることができます。
次のステップとして、Kubernetes入門やAWS ECSでのコンテナ運用についても学ぶことをおすすめします。エンジニアとしての市場価値を高めるためにも、コンテナ技術は必須スキルです。