コンテナ史 chroot→Docker→K8s 1979-2026(コンテナ史)
Container 50年史 1979-2026。chroot (1979 Unix V7 Bell Labs・初Process Isolation・Filesystem Sandbox限定)・FreeBSD Jail (2000 Poul-Henning Kamp・Process+Network+Filesystem分離 Container祖)・Solaris Zones (2004年2月 Sun Solaris 10・Branded Zone+Crossbow Network)・Linux VServer (2001 Jacques Gélinas FOSS・Mainline外)・OpenVZ (2005 Parallels SWsoft・Mainline外Patch)・Linux cgroups (2007 Google Paul Menage+Rohit Seth Mainline)+Linux namespaces (2002-2013 Eric Biederman・mnt+pid+net+user+ipc+uts+cgroup)・LXC Linux Containers (2008年8月 Daniel Lezcano IBM・cgroups+namespaces統合)・systemd-nspawn (2013 Lennart Poettering)・Docker (2013年3月20日 Solomon Hykes dotCloud→Docker Inc・LXCラップ→libcontainer 2014→runc OCI 2015・Hub Public Registry)・Docker Compose (2014)+Docker Swarm (2014)・rkt Rocket (2014 CoreOS→廃止)・OCI Open Container Initiative (2015年6月 Standard・runc+containerd+CRI-O Spec)・Kubernetes K8s (2014年6月 Google・Borg基盤・1.0 2015年7月)・etcd+CRI Container Runtime Interface・Helm Chart (2016)・Knative+OpenShift+Rancher・Podman (2018 RedHat Daemonless rootless)・containerd (2017 OCI Default)・k3s (2019 Rancher Edge)+k0s+microk8s (Lightweight)・nerdctl (2020 containerd CLI)・Buildx (Docker Multi-Arch)・Buildah+Skopeo (RedHat)・WebAssembly+wasmEdge+Krustlet (2024-26 K8s統合)・¥0 OSS。
概要
1979 年に Unix V7 で導入された chroot は、プロセスをファイルシステムのルートに限定するだけのサンドボックスであった。以降、プロセス分離とネットワーク分離を組み合わせたコンテナ概念が次々に登場し、2026 年現在ではマイクロサービスのデプロイ基盤として不可欠な技術へと発展した。
本稿では、chroot から始まり、FreeBSD Jail、Solaris Zones、Linux VServer、OpenVZ、LXC、Docker、Kubernetes までの主要マイルストーンを時系列で整理し、2025–2026 年の最新動向を交えて解説する。
主な特徴・仕組み
| 技術 | 主な分離対象 | 実装ベース | 代表的な実装 | 主要なオープンソースプロジェクト |
|---|---|---|---|---|
| chroot | ファイルシステム | カーネル機能 | なし | なし |
| FreeBSD Jail | プロセス・ネットワーク・ファイルシステム | カーネル | なし | なし |
| Solaris Zones | プロセス・ネットワーク・ファイルシステム | カーネル | なし | なし |
| Linux VServer | プロセス・ファイルシステム | カーネル | なし | なし |
| OpenVZ | プロセス・ネットワーク・ファイルシステム | カーネル | なし | なし |
| LXC | プロセス・ネットワーク・ファイルシステム | カーネル | なし | なし |
| Docker | プロセス・ネットワーク・ファイルシステム | LXC → libcontainer → runc | 2013 | OCI |
| Kubernetes | Pod(複数コンテナ) | CRI (containerd/CRI‑O) | 2014 | K8s 1.0 2015 |
-
分離単位
chrootはファイルシステムのみ。FreeBSD Jail以降はプロセス・ネットワーク・ファイルシステムを同時に分離。LXCは Linux カーネルのcgroupsとnamespacesを組み合わせ、プロセス・ネットワーク・ユーザー・IPC などを分離。Dockerは LXC をラップし、libcontainerで実際の名前空間を生成。2015 年に OCI で標準化。Kubernetesは Pod という単位で複数コンテナをまとめ、スケジューリング・サービスディスカバリ・ローリングアップデートなどを提供。
-
主要オープンソースプロジェクト
runc(2015): OCI 仕様に準拠した実行エンジン。containerd(2017): Docker のデフォルトランタイム。CRI‑O(2018): Kubernetes 用の軽量ランタイム。Buildah/Skopeo(2018): イメージビルド・転送。wasmEdge(2024): WebAssembly コンテナランタイム。
具体例・対応製品 (テーブル必須)
| 製品 | 主要バージョン | リリース年 | サポートOS | CPU アーキテクチャ | 主要機能 | 代表的なユースケース |
|---|---|---|---|---|---|---|
| Docker | 25.0 | 2025 | Linux, macOS, Windows | x86_64, ARM64 | イメージレジストリ、Compose | CI/CD、マイクロサービス |
| Kubernetes | 1.30 | 2026 | Linux | x86_64, ARM64, s390x | Pod、Service、Ingress | クラウドネイティブアプリ |
| Podman | 4.7 | 2025 | Linux | x86_64, ARM64 | デーモンレス、rootless | 開発環境、CI |
| containerd | 1.7 | 2025 | Linux | x86_64, ARM64 | ランタイム、CRI | Kubernetes、OpenShift |
| OpenVZ | 7.0 | 2024 | Linux | x86_64 | OS レベル仮想化 | ホスティングサービス |
| rkt (Rocket) | 1.0 | 2017 | Linux | x86_64 | セキュリティ重視 | 古い CoreOS 環境 |
| wasmEdge | 0.8 | 2025 | Linux | x86_64, ARM64 | WebAssembly コンテナ | エッジコンピューティング |
| k3s | 1.27 | 2025 | Linux | x86_64, ARM64 | 軽量 K8s | IoT、エッジデバイス |
| microk8s | 1.28 | 2026 | Linux | x86_64, ARM64 | スタンドアロン K8s | 開発者向け、ローカル環境 |
| Helm | 3.12 | 2025 | Linux, macOS, Windows | x86_64, ARM64 | チャート管理 | アプリケーションデプロイ |
- 数値スペック
- Docker 1.0 は 2013 年 3 月 20 日にリリース。
- Kubernetes 1.0 は 2015 年 7 月に正式リリース。
- containerd 1.0 は 2017 年 10 月にリリース。
- Podman 4.0 は 2024 年 9 月にリリース。
- k3s 1.20 は 2019 年 9 月にリリース。
- Helm 3.0 は 2019 年 10 月にリリース。
- wasmEdge 0.5 は 2023 年 6 月にリリース。
選び方・注意点
- 運用環境の制約
- ハイパーバイザー が不要で、OS レベルでの軽量化を重視するなら
containerd+Kubernetes。 - rootless が必須なら
Podmanで代替可能。
- ハイパーバイザー が不要で、OS レベルでの軽量化を重視するなら
- セキュリティ要件
OpenVZはカーネルパッチが必要で、アップデートが遅い。rktは AppArmor/SELinux と組み合わせて高い隔離性を実現。
- 開発・CI での高速化
Buildah+Skopeoでイメージのビルド・プッシュを高速化。Docker Composeはマルチコンテナ開発に便利。
- エッジ・IoT
k3sやmicrok8sは 5–10 MB の軽量化で、ARM64 デバイスに最適。wasmEdgeは WebAssembly を直接実行でき、バイナリサイズが 1–2 MB。
関連用語との違い
- chroot
- ファイルシステムのみを隔離。
- ネットワークやプロセスは共有。
- Docker
chrootを拡張し、名前空間と cgroups を併用。- イメージレジストリ、Compose で開発フローを統合。
- Kubernetes
- コンテナ単位ではなく Pod 単位でスケジューリング。
- サービスディスカバリ、ロードバランシング、自己修復機能を提供。
- OpenVZ
- Linux カーネルのパッチで OS レベル仮想化。
- コンテナ内で完全な OS 環境を提供。
- Podman
- Docker と同一 CLI でデーモンレス実行。
- rootless モードが標準。
よくある質問 (FAQ)
- Q: Docker と Podman の主な違いは何ですか?
A: Docker はデーモンベースで root 権限が必要。Podman はデーモンレスで rootless が可能。 - Q: Kubernetes の CRI‑O と containerd の違いは?
A: CRI‑O は Kubernetes 専用の軽量ランタイム。containerd は汎用ランタイムで Docker も内部で利用。 - Q: wasmEdge を Kubernetes で使うにはどうすればいいですか?
A:wasmEdgeを CRI‑O のランタイムとして登録し、Pod のruntimeClassNameにwasmedgeを指定。
まとめ
1979 年の chroot から始まり、2000 年代に入りプロセス・ネットワーク・ファイルシステムを同時に分離する技術が登場。2013 年に Docker が LXC をラップし、OCI で標準化。2014 年に Kubernetes が Borg をベースに開発され、マイクロサービスのデプロイ基盤として定着。2025–2026 年では、WebAssembly コンテナランタイムや軽量 K8s ディストリビューション(k3s、microk8s)がエッジや IoT で注目され、OCI 仕様の拡張により多様なランタイムが共存。
コンテナ技術は「軽量化」「自動化」「セキュリティ」の三本柱を軸に進化を続けており、今後も新しいランタイムやオーケストレーションの統合が期待される。