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

現場実践|Docker入門
Docker入門ガイド|コンテナの仕組みからdocker-composeまでインフラエンジニアが押さえるべき基礎
「Dockerって何?」「仮想マシンとどう違うの?」——Dockerのコンテナ仕組み・基本コマンド・Dockerfile・docker-composeまでインフラエンジニアが最初に覚えるべき内容を解説します。
💡 DockerはインフラエンジニアにとってKubernetesの前提知識。「コンテナとは何か・イメージとは何か」を正確に理解してからKubernetes学習に進むことが最短ルートです。
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:latest3. 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月からフリーランス講師として本格始動予定です。
ABOUT ME




