現場実践|Dockerコンテナ基礎

Dockerコンテナの仕組みと実践入門|Linuxのcgroups・namespaceからDockerfileまで

「Dockerって何?仮想マシンと何が違うの?」——Linuxのcgroups・namespaceによるコンテナの仕組みから、Dockerfile・docker-composeの実践的な使い方まで解説します。

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

💡 DockerはLinuxの「cgroups(リソース制限)」と「namespace(分離)」を使ったコンテナ技術。仮想マシンよりも軽量・高速で、「一度作ればどこでも動く」ポータビリティが最大の強みです。

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

Docker・Kubernetes環境の設計・構築を複数案件で担当してきた立場から、コンテナの基礎から実践を解説します。

1. コンテナとVMの違い

仮想マシン(VM)コンテナ(Docker)
起動時間数分数秒
サイズGBクラス(OSを含む)MBクラス(OSカーネルを共有)
ポータビリティハイパーバイザー依存DockerさえあればどこでもOK
プロセスの分離完全分離Linuxのnamespaceで分離(カーネルは共有)

2. 基本的なDockerコマンド

# イメージを取得して起動
docker pull nginx
docker run -d -p 8080:80 --name mynginx nginx

# コンテナの確認・停止・削除
docker ps
docker stop mynginx
docker rm mynginx

# コンテナ内でコマンドを実行
docker exec -it mynginx bash

# ログを確認
docker logs mynginx -f

3. Dockerfileの書き方

# Node.jsアプリのDockerfile例
FROM node:20-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .

EXPOSE 3000
CMD ["node", "server.js"]

ベースイメージは軽量な「alpine」を選ぶことでイメージサイズを小さくできます。RUNは1行にまとめることでレイヤー数を減らしイメージを軽量化できます。

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

version: "3.8"
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: password
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:
📌 この記事のポイント
  • コンテナはLinuxのcgroups(リソース制限)とnamespace(分離)を使ってVMより軽量・高速を実現する
  • docker run・ps・exec・logsの4コマンドが日常的に最もよく使うDockerコマンド
  • Dockerfileはalpineベースイメージ+RUNの最小化でイメージを軽量化する

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

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

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

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