昨今の仮想化コンテナ技術の変化
仮想化コンテナ技術は今も次々と新しい選択肢が生まれてるらしいので、自分用にまとめてみた
近年の主流なコンテナ技術
1.Docker(ドッカー)
2.Podman(ポッドマン)
3.containerd(コンテナディー)
4.WebAssembly(Wasm)/WASI
1.Docker
いうまでもなくあの有名なDocker。家庭用では長年の実績があり、今も定番。
企業間では、2021年末に大手企業でのDocker Desktop一部機能の有料化が発表され、代替ツールへの移行が加速。
また、Kubernetesが2022年に「内部でDockerを直接使うのをやめる(Dockershimの廃止)」と決定。
Dockerは裏で dockerd という巨大な権限を持ったプロセスを常時動かす必要があり、これがセキュリティやリソースの面でネックになることがある。
これらの理由から、近年では代替ツールへの移行が進む。
2.Podman
Red Hat社を中心に開発されている、現在のDockerの筆頭ライバルです。
最大の特徴は「デーモンレス(常駐プロセスが不要)」かつ「ルート権限不要(Rootless)」な点です。
何が良いか: 万が一コンテナがハッキングされても、ホストのLinuxサーバーのルート権限(管理者権限)まで乗っ取られるリスクが極めて低く、セキュリティが非常に強固です。
互換性: コマンドがDockerとほぼ完全に同じです。ターミナルで alias docker=podman と設定すれば、今まで通り docker run や docker-compose(現在は podman-compose やPodman内蔵機能)がそのまま動きます。
3.containerd
もともとDockerの内部パーツだった「コンテナを動かすコア部分」だけを切り出した、非常に軽量なエンジンです。
現在のKubernetesなどの大規模システムでは、重たいDockerをまるごと動かすのではなく、この containerd などを直接呼び出してコンテナを動かすのが主流(完全な黒幕・標準スタック)になっています。
4.WebAssembly(Wasm)
もともとはブラウザ上で3Dゲームなどを爆速で動かすための技術(WebAssembly)でしたが、これを「サーバー側でも動かそうぜ」としたのが WASI(Wasm Embedded System Interface) です。
Dockerの創設者であるSolomon Hykes氏は、かつてこう発言して話題になりました。
「もし2008年にWasmとWASIが存在していたら、私はDockerを作る必要はなかっただろう。それほどWasmは重要だ」
