メインコンテンツへスキップ

Dockerの基本

🐳 はじめに:Dockerって何?なぜ話題?

コンテナ技術の代表格「Docker」は、開発環境やアプリケーションの動作を軽量かつ再現性高く実現するために生まれました。

  • 「自分の環境では動くのに、他の環境では動かない」問題を解決!

  • 仮想マシンより速く・軽く・簡単

  • 開発から本番まで同じ環境を共有できる!

この記事では、Dockerの基本、よくある疑問、そしてDocker以外のコンテナ技術までまとめて紹介します。


🧱 Dockerとは?なぜ生まれた?

🎯 背景

かつてのシステム構築は、以下のような課題がありました:

  • サーバーごとに環境設定がバラバラ

  • 仮想マシン(VM)は重くて起動が遅い

  • 開発→テスト→本番で動作に差異が出る

これを解決するために、アプリケーションとその環境をひとまとめにして、どこでも同じように動かせる技術が求められたのです。

🐳 Dockerの登場

Dockerは2013年に登場し、以下を実現しました:

  • 1コマンドで環境を再現できる

  • OSを丸ごと仮想化せず、軽量

  • 複数のコンテナを同じホストで同時に実行可能


🏗 仮想マシン vs Dockerコンテナ

項目 仮想マシン (VM) Dockerコンテナ
起動時間 数分 数秒
容量 数GB(OS込み) 数百MB〜
カーネル 各VMが独自 ホストと共有
パフォーマンス 重い 軽い
使い方 OSごと仮想化 アプリだけを仮想化

📦 Dockerの基本用語

🖼 イメージ(Image)

  • アプリ+必要な環境の設計図

  • Dockerfileから作成

📦 コンテナ(Container)

  • イメージを実行した実体

  • 起動・停止・削除が可能

🗃 ボリューム(Volume)

  • データの永続化と外部共有に使用


🚀 Dockerの嬉しさ

  • docker run 1発で環境構築が完了

  • イメージを配れば、どこでも同じように動く

  • CI/CD、テスト、自動化に最適

  • コンテナごとに依存を分離できる


❓ よくある疑問

🧬 作った環境はOSのバージョンに依存する?

基本的には依存しない!
ただし以下の点に注意:

  • Dockerコンテナはホストのカーネルを共有

    • つまりLinuxカーネル必須

  • WindowsやmacOSではWSL2や軽量VM経由で動かしている

  • カーネルが古すぎると、最新のDocker機能が使えないことも

【情報】だからこそ「Dockerを入れてさえいれば、ほぼ同じ環境をどのOSでも再現可能」なんです。


🧰 WSL2って最初から入ってるの?

✅ Windows 11ならほぼOK!

  • wsl --install コマンドで簡単にWSL2導入可能

  • 22H2以降はストア版WSLが使える

⚠ Windows 10の場合は少し手順が必要

  • 「Windowsの機能」でWSLと仮想マシンを有効化

  • Linuxカーネルの更新プログラムを手動で導入

  • wsl --set-default-version 2 でWSL2に切り替え

Docker Desktopを使えばWSL2もまとめてインストールされるので便利!


🔁 Docker以外のコンテナ技術は?

ツール名 特徴・用途 備考
Podman Docker互換CLI、root不要でセキュア Red Hat系に人気
Kubernetes コンテナのオーケストレーション 大規模運用向け
Containerd Dockerの中核、軽量ランタイム K8sにも採用される
CRI-O Kubernetes専用ランタイム より軽量な選択肢
LXC/LXD OSレベルの仮想化(VMに近い) サーバーレベルの分離に強い
OpenShift Red Hat製、K8sベースの商用製品 企業向けに強い
Docker Desktop GUI操作が可能なローカルツール Windows/Mac向け

🏁 おわりに

Dockerをはじめとしたコンテナ技術は、現代の開発・運用の必須スキルになっています。小さな開発環境から本番運用まで、幅広く活用可能です。