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で起動する練習から始めましょう。