containerd 2.0(コンテナディーツーゼロ)
2024年CNCF Graduated Project containerd 2.0 GA。Sandbox API+CDI(Container Device Interface)+NRI(Node Resource Interface)+Image Encryption+OCI 1.1+Multi-arch Image搭載。
概要
containerd 2.0は2024年11月にCNCF Graduated Project の containerd 2.0 が GA(General Availability)を迎えたContainer Runtime メジャーリリースで、Container Runtime の業界標準実装として Docker/Kubernetes/AWS Fargate/Azure Container Instances/Google Cloud Run/Oracle Cloud等の主要Container Platform の基盤として機能。CNCF(Cloud Native Computing Foundation) 2017年寄贈・2019年Graduated を経て、 2024年Major Version 2 GA到達は Container Ecosystem における重要な節目。1.7系列(2023-2024)からの主要進化要素は、Sandbox API(Pod Sandboxの抽象化レイヤー)・CDI(Container Device Interface, GPU/FPGA/SR-IOV等のデバイス管理API)・NRI(Node Resource Interface, ノード資源管理プラグイン)・Image Encryption(Image暗号化)・OCI 1.1対応等。Kubernetes ContainerD CRI(Container Runtime Interface) のDefault Runtime として、Pod作成・Image Pull・Container Lifecycle管理 全てを担う中核コンポーネント。
主な特徴・仕組み
- CNCF Graduated: 2019年Graduated、業界最高水準の Maturity+Governance
- OCI 1.1対応: Open Container Initiative 1.1 仕様完全準拠、 Image+Runtime互換性
- Sandbox API: Pod Sandboxの抽象化、Kata Containers/Firecracker等のVM型Sandbox統合
- CDI(Container Device Interface): NVIDIA GPU/AMD GPU/Intel iGPU/FPGA等のデバイスをCNCF標準で渡す
- NRI(Node Resource Interface): Node資源管理 Plugin Architecture、Custom Scheduler/Load Balancer連携
- Image Encryption: OCIv1.1+Image Encryption Spec、 Sensitive Image暗号化
- Multi-arch Image: amd64/arm64/arm/ppc64le 等のCPU Arch自動選択
- Lazy-pulling: 部分Image Layer先行起動、Cold Start高速化
- Snapshotter Plugin: overlayfs/btrfs/zfs/native等のFile System Plugin抽象化
- Plugin Architecture: Image Service/CRI Service/Snapshotter等のModular設計
- runc/crun併用: 実行Engine層は runc(Go) または crun(C) でOCI Runtime Spec対応
スペック比較表
| 項目 | containerd 2.0 | containerd 1.7 | CRI-O | Docker(containerd内蔵) |
|---|---|---|---|---|
| OCI対応 | 1.1+ | 1.0+ | 1.1+ | 1.1+ |
| Sandbox API | ○ | × | △ | ○(継承) |
| CDI | ○ | △ Plugin | ○ | ○(継承) |
| NRI | ○ | △ | × | ○(継承) |
| Image Encryption | ○ | × | × | ○(継承) |
| Multi-arch | ○ | ○ | ○ | ○ |
| Plugin Architecture | ○ Modular | ○ | △ | ○(継承) |
| Default Runtime | runc/crun | runc | runc/crun | runc(Default) |
| Kubernetes統合 | CRI Native | CRI Native | CRI Native | (deprecated dockershim) |
具体例・対応製品
# containerd CLI(ctr)による直接操作
$ ctr image pull docker.io/library/nginx:latest
$ ctr container create docker.io/library/nginx:latest my-nginx
$ ctr task start --detach my-nginx
# Kubernetes での containerd 利用(自動)
$ crictl images # CRI経由でcontainerd Image一覧
$ crictl ps # Container一覧
# CDI Spec例(NVIDIA GPU)
cdi:
apiVersion: cdi.k8s.io/v1
kind: ContainerDevice
spec:
name: nvidia.com/gpu=0
devices:
- hostPath: /dev/nvidia0
containerPath: /dev/nvidia0
- containerd 2.0 GA: 2024年11月リリース、CNCF Graduated
- Kubernetes 1.32+: containerd 2.0 を Default Runtime として推奨
- AWS EKS: 2025年Q1にcontainerd 2.0採用予定
- GKE/AKS: Google Cloud/Azure Kubernetesでcontainerd 2.0対応進行
- Docker Desktop 4.30+: 内部に containerd 2.0採用、Image Store新基盤
- 競合機種: CRI-O(Red Hat主導)、podman(libpod, Daemonless)、Docker Engine(containerdラッパー)
自作PCでの選び方・注意点
containerd 2.0は Container Runtime の中核技術で、自作PCの選択とは直接関係しないが、Container/Kubernetesエンジニアには必須知識。jisaku.com の VPS API(Coolify/Docker Compose環境)では、Docker Engine 内部に containerd 2.0が採用されており、間接的に利用している状況。Kubernetes クラスタ運用するならcontainerd 2.0 Default Runtime として直接操作する場面が増える。CDI(Container Device Interface)はNVIDIA GPU/AMD GPU/Intel iGPU等のGPUを Container に渡す標準化Interface で、 Machine Learning(LLM Inference・Stable Diffusion・PyTorch Training)を Container環境で実行する際の重要技術。AWS Trainium2/Google TPU/Microsoft Maia等のCloud AI Acceleratorも CDI経由で Container統合される標準。NRI(Node Resource Interface)は Custom Scheduling+Load Balancing+Resource Manager の拡張Pluginを実装可能、Edge Computing/IoT Cluster で価値発揮。containerd 2.0は Production-grade安定性で、CNCF Graduated Status+大手Cloud Provider全採用の信頼性。一方、End-userとしての利用は Docker Engine/Kubernetes 経由が主流で、 containerd CLI(ctr/crictl) を直接使うのは Container/Cluster管理者中心。
関連用語との違い
containerd 1.7との違い: Sandbox API/CDI/NRI/Image Encryption の4機能が 1.7→2.0 で正式GA、 1.7はBeta実装。OCI 1.0→1.1 対応で Image+Runtime互換性向上。Production移行は 1.7 LTS 継続+特定機能ニーズで2.0 検証が一般的。 CRI-Oとの違い: CRI-OはRed Hat主導でKubernetes CRI 専用設計、 containerd は汎用Container Runtime+CRI Plugin。OpenShift系はCRI-O主軸、 EKS/GKE/AKS はcontainerd主軸。互換性は OCI Spec 経由で確保。
よくある質問(FAQ)
Q1: Docker と containerd の関係は? A: Docker Engine は内部で containerd を Container Runtime として利用、 Docker → containerd → runc → Linux Kernel の階層構造。Docker は High-level UX(Build/Run/Compose等)、containerd は Low-level Container Lifecycle管理。Docker Engine から containerd を抽出した形が Standalone containerd。
Q2: Kubernetes で containerd 1.x→2.0 移行は? A: Major Version変更だが下位互換性高い、Cluster停止せずRolling Update可能。CDI/NRI 利用予定なら2.0必須、それ以外は 1.7 LTS継続+段階移行が安全。AWS EKS/GKE/AKS は Cloud Provider側で自動Migration。
Q3: Docker Desktop の containerd Image Store とは? A: Docker Desktop 4.30+ で Default化された Container Image管理新基盤。従来 Docker独自 graphdriver から containerd Snapshotter に移行、Multi-arch Image+Image Encryption+OCI 1.1 完全対応の恩恵。Backward Compatibility あり、既存Image そのまま利用可能。
まとめ
- containerd 2.0 = 2024年11月CNCF Graduated GA Container Runtime
- Sandbox API+CDI+NRI+Image Encryption+OCI 1.1対応
- Docker/Kubernetes/AWS Fargate/Azure Container等の業界標準基盤
- Multi-arch Image+Lazy-pulling+Snapshotter Plugin Architecture
- Container Runtime のDe Facto Standard、Production-grade 信頼性