現場実践|Docker入門

Docker入門ガイド|コンテナの仕組みからdocker-composeまでインフラエンジニアが押さえるべき基礎

「Dockerって何?」「仮想マシンとどう違うの?」——Dockerのコンテナ仕組み・基本コマンド・Dockerfile・docker-composeまでインフラエンジニアが最初に覚えるべき内容を解説します。

読了目安:約18分更新日:2026年3月

💡 DockerはインフラエンジニアにとってKubernetesの前提知識。「コンテナとは何か・イメージとは何か」を正確に理解してからKubernetes学習に進むことが最短ルートです。

この記事を書いた人
現役ITエンジニア・IT講師(経験14年)
CCNA・CCNP 取得LPIC-1 保有SES現場を複数経験

Docker・コンテナ技術を複数の現場で活用してきた立場から、インフラエンジニア向けに解説します。

1. 仮想マシン vs コンテナの違い

仮想マシン(VM)コンテナ(Docker)
起動時間数分数秒以内
リソース消費ゲストOSも含む(重い)ホストOSカーネルを共有(軽い)
分離レベル強い(独立したOS)プロセスレベルの分離
ポータビリティVMイメージは大きいイメージは小さく配布が容易
主な用途フル環境の分離が必要な場合アプリケーションのパッケージング・実行

2. Dockerの基本コマンド

# イメージのpull・実行
docker pull nginx:latest
docker run -d -p 8080:80 --name my-nginx nginx:latest

# 実行中コンテナの確認
docker ps
docker ps -a  # 停止中も含む

# コンテナの操作
docker stop my-nginx
docker start my-nginx
docker rm my-nginx

# コンテナ内でシェルを実行
docker exec -it my-nginx bash

# イメージの管理
docker images
docker rmi nginx:latest

3. Dockerfileの書き方

FROM python:3.11-slim

WORKDIR /app

# 依存ライブラリをインストール(レイヤーキャッシュ活用のため先に)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# アプリケーションをコピー
COPY . .

# 非rootユーザーで実行(セキュリティ)
RUN useradd -m appuser
USER appuser

EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

4. docker-composeで複数コンテナを管理

version: "3.9"
services:
  web:
    build: .
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/mydb
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  postgres_data:
📌 この記事のポイント
  • コンテナはゲストOS不要でホストカーネルを共有するため、VMより軽量で起動が数秒以内
  • DockerfileはFROM→WORKDIR→COPY→RUN→USERの順に書きレイヤーキャッシュを意識して最適化する
  • docker-composeで複数コンテナ(WebサーバーとDB)をまとめてdocker compose upで起動できる

キャリアの疑問、一緒に解決しませんか?

Route Bloomでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。

※Dockerのコマンドはバージョンにより異なります。公式ドキュメントもご参照ください。

ABOUT ME
たから
サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営