Dockerとは何か?なぜエンジニアに必要なのか
「自分のPCでは動いたのに本番では動かない」——このよくある問題を解決するのがDockerです。
Dockerはコンテナ技術を使い、アプリケーションの実行環境を丸ごとパッケージ化します。開発環境・テスト環境・本番環境で同じ環境を再現できるため、現代のWeb開発には欠かせないツールです。
仮想マシン(VM)とコンテナの違い
| 項目 | 仮想マシン | Dockerコンテナ |
|---|---|---|
| 起動時間 | 数分 | 数秒 |
| リソース消費 | 大きい | 小さい |
| OSの有無 | ゲストOSを持つ | ホストOSを共有 |
| ポータブル性 | 低い | 高い |
コンテナはVMより軽量・高速なため、マイクロサービス・CI/CDとの相性が良いです。
Dockerの基本用語
| 用語 | 説明 |
|---|---|
| イメージ | コンテナの設計図(実行前の状態) |
| コンテナ | イメージから起動した実行中の環境 |
| Dockerfile | イメージを作るための設定ファイル |
| Docker Hub | イメージを共有するレジストリサービス |
| docker-compose | 複数コンテナをまとめて管理するツール |
基本コマンド
# イメージを取得
docker pull nginx
# コンテナを起動
docker run -d -p 8080:80 nginx
# 起動中のコンテナ一覧
docker ps
# コンテナを停止
docker stop コンテナID
# コンテナの中に入る
docker exec -it コンテナID bash
# イメージの一覧
docker images
# 不要なリソースを削除
docker system prune
Dockerfileの基本
# ベースイメージ
FROM python:3.11-slim
# 作業ディレクトリの設定
WORKDIR /app
# 依存ファイルをコピー
COPY requirements.txt .
# パッケージのインストール
RUN pip install -r requirements.txt
# アプリケーションをコピー
COPY . .
# 起動コマンド
CMD ["python", "app.py"]
docker-composeの使い方
# docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: password
docker compose upだけでWebアプリ+DBが同時に起動します。
まとめ
Dockerはエンジニアの開発効率を大幅に上げる必須ツールです。まずはnginxやpostgresなどの公式イメージをdocker runで起動する練習から始めましょう。





