初心者向け Docker & Docker Compose ガイド
アプリ開発・テスト・デプロイを効率化するコンテナ入門
目次
はじめに
Dockerは コンテナ 技術を用いて、アプリケーションとその依存関係を一つのパッケージにまとめ、どこでも・誰でも・同じように 動かせるようにするプラットフォームです。本ガイドでは Docker の最低限押さえておきたい基礎をさらっと確認したあと、現場で最も出番の多い Docker Compose を中心に解説します。
想定読者: プログラミング経験はあるものの、コンテナ技術は初めて or 触り始めたばかりの方。
Docker Desktopのインストール
Windows / macOS
- Docker Desktop 公式サイト からインストーラをダウンロード。
- インストーラを実行し、案内に従ってインストール。
- 完了するとタスクトレイ(macOS はメニューバー)にクジラアイコンが表示されます。
ポイント: Docker Desktop には Docker CLI と Docker Compose v2 が同梱されています。追加のセットアップは不要です。
Dockerとは?
Docker はアプリケーションを イメージ (image) という静的テンプレートにまとめ、それを実行単位である コンテナ (container) として起動します。仮想マシン (VM) と異なりホスト OS のカーネルを共有するため、軽量・高速に動きます。
コンテナ | 仮想マシン | |
---|---|---|
OS カーネル | ホストと共有 | ゲストごとに個別 |
起動速度 | 数秒以下 | 数十秒〜分 |
サイズ | MB〜百数十 MB | 数 GB |
Dockerの基本用語と軽い使い方
用語 | 一言で | 代表コマンド |
---|---|---|
イメージ | 実行環境の設計図 | docker pull nginx |
コンテナ | 実行中のイメージ | docker run -d -p 80:80 nginx |
Dockerfile | カスタムイメージを定義するファイル | docker build -t myapp . |
Docker Compose について
単一コンテナなら docker run で十分ですが、Web + DB + キャッシュ のように複数のコンテナを協調させるケースでは管理が煩雑になります。Docker Compose は
- 複数サービスの設定を YAML 1 枚で記述
- 依存関係・ネットワーク・ボリュームを自動構成
- up / down だけで開発環境を丸ごと立ち上げ・停止
- .env による環境分岐やスケールアウトも簡単
といったメリットがあり、ローカル開発から CI/CD まで 幅広く採用されています。
Docker Composeの基本
version: "3.9"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
build: .
environment:
- NODE_ENV=development
volumes:
- ./src:/usr/src/app
depends_on:
- db
db:
image: postgres:16
restart: always
volumes:
- db-data:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=secret
volumes:
db-data:
主なフィールド早見表
フィールド | 用途 | 例 |
---|---|---|
image | 既存イメージを使用 | redis:7-alpine |
build | Dockerfileからビルド | build: ./backend |
ports | ポートマッピング | - "3000:3000" |
volumes | データ・ソース共有 | - ./data:/data |
environments | 環境変数 | - DEBUG=true |
depends_on | 起動順制御 | depends_on: [db] |
主要コマンド
docker compose up -d # 起動
docker compose down # 停止・削除
docker compose ps # 状態確認
docker compose logs -f # ログ監視
docker compose exec app bash # 中に入る
Dockerの応用例
Dockerはさまざまな場面で利用されています。以下にいくつかの応用例を紹介します。
- 開発環境の構築: 開発者が同じ環境で作業できるように、Dockerを使って開発環境を構築します。
- CI/CDパイプライン: 自動テストやデプロイを行うためのCI/CDパイプラインにDockerを組み込むことで、効率的な開発が可能になります。
- マイクロサービスアーキテクチャ: アプリケーションを小さなサービスに分割し、それぞれを独立したコンテナとして管理します。
まとめ
この記事では、Dockerの基本から応用までを解説しました。Dockerを使うことで、アプリケーションの開発や運用がより効率的に行えるようになります。最初は難しく感じるかもしれませんが、実際に手を動かしてみることで理解が深まります。ぜひ、Dockerを使ってみてください!
Dockerに関するさらなる情報は、公式ドキュメントを参照してください。
Discussion