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