Linux カーネルの cgroups(リソース制限)と namespaces(プロセス分離) を活用し、アプリケーションを軽量なコンテナとしてパッケージ・実行するオープンソースの仮想化プラットフォーム。2013 年に登場し、現代の開発・運用の事実上の標準になっている。
Engine と Desktop の違い
| 種類 | 動作環境 | ライセンス | 用途 |
|---|---|---|---|
| Docker Engine | Linux ネイティブ | OSS(Apache 2.0) | サーバー・CI/CD・本番運用 |
| Docker Desktop | Windows / macOS(仮想化レイヤー必要) | 大企業は有料(従業員 250 名超) | 開発者の手元マシン |
Linux 上では Docker Engine がカーネルに直結して動くため、Windows + WSL2 + Docker Desktop の 二重仮想化(Hyper-V → WSL2 → Docker) を経由する場合と比べてメモリ・I/O オーバーヘッドが大幅に少ない。
主要コマンド
| コマンド | 役割 |
|---|---|
docker run | コンテナ起動 |
docker compose up | 複数コンテナを宣言的に起動 |
docker build | イメージビルド |
docker exec | 起動中コンテナ内でコマンド実行 |
docker system prune | 不要リソース削除 |
関連エコシステム
- Docker Compose — 複数コンテナを
docker-compose.ymlで宣言的に管理 - Dockerfile — イメージ定義の DSL
- Docker Hub — 公式コンテナレジストリ
- Kubernetes — 大規模運用のためのコンテナオーケストレータ(Docker は単体ホスト用)
Linux 上で動かす利点
| 観点 | Linux ネイティブ | Windows + WSL2 + Desktop |
|---|---|---|
| 仮想化レイヤー | カーネル直結 | Hyper-V → WSL2 → Docker |
| メモリ消費 | 軽量 | 30 GB+ ベース消費 |
| I/O パフォーマンス | ネイティブ速度 | ファイル共有越しで遅延 |
| ライセンス | 完全無料 | 大企業は Desktop 有料 |
関連記事
- 脱Microsoft 全体戦略・総論 — WSL2 + Docker Desktop からの移行動機