コンテナランタイムのcontainerdに、WebAssemblyをコンテナとして扱うための「runwasi」が統合。これからのコンテナランタイムはWebAssemblyと統合されていく
今回は「コンテナランタイムのcontainerdに、WebAssemblyをコンテナとして扱うための「runwasi」が統合。これからのコンテナランタイムはWebAssemblyと統合されていく」についてご紹介します。
関連ワード (右端、将来、操作等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
コンテナランタイムの事実上の標準となっているcontainerdに、WebAssemblyをコンテナとして扱うための「runwasi」が昨年(2022年)12月に統合されていたことが分かりました。
これによりcontanerdはWebAssemblyランタイムとしてWasmtimeとWasmEdgeを正式にサポートし、containerdの管理下でこれらのランタイムを用いてWebAssemblyバイナリの実行が可能になる見通しです。
将来のcontainerdのリリースでこれらの機能が正式版として登場すると見られます。
containerdでWasmEdgeが正式サポート
先月、1月31日にWebAssemblyランタイム「WasmEdge」の開発元であるMichael Yuan氏が次のようなツイートをし、containerdに対応したコンテナランタイムとして、WebAssemblyランタイムであるWasmEdgeが正式にサポートされたことを明らかにしました(これが今回の記事の発端となりました)。
Congratulations to the @realwasmedge and @containerd team. WasmEdge is now officially supported as a “container runtime” in containerd!
Developers from @secondstateinc @Docker @Azure @Microsoft contributed to this @CloudNativeFdn open source effort. https://t.co/HPbf9a3Pjn
— Michael Yuan (@juntao) January 30, 2023
これは、containerdの管理下で、主にコンテナのプロセスを管理する低レベルランタイムの働きをするruncの代わりに、WebAssemblyランタイムを用いること可能にするshimである「runwasi」が、WasmEdgeをサポートするようになったためです。
containerdにshimであるrunwasiが統合
もともとcontainerdによるWebAssemblyランタイムのサポートは、2022年10月にDocker社がDocker DesktopにWebAssemblyランタイムの統合を発表したことで注目されるようになりました。
参考:Docker DesktopがWebAssemblyランタイムを統合。コンテナと同様にWebAssemblyイメージを実行可能に
この時点でDocker社は下記の図の右端のように、containerdからruncの代わりに「container-wasm-shim」経由でWebAssemblyランタイムを操作することで、Docker DesktopにWebAssemblyランタイムであるWasmEdgeを統合する仕組みを明らかにしています。
そしてこの発表とほぼ同時に、Docker社はGitHub上のDockerのロードマップページで「Docker+Wasm Integration · Issue #426 · docker/roadmap · GitHub」を公開し、Docker DesktopへのWebAssemblyランタイムの統合について自由に意見を募集しました。
そこに先ほどのツイートで登場していた、WasmEdgeの開発元であるSecond StateのMichael Yuan氏が、
We are in the process of merging it upstream to DeisLabs runwasi project, and hopefully eventually to the containerd project itself.
(WasmEdgeをcontainerdで利用するためのshimは)DeisLabsのrunwasiプロジェクトとマージしているところで、最終的にはこれをcontainerdに提供したいと願っている
と発言しました。
この発言に対してWebAssemblyの標準化を推進する団体であるBytecode AllianceのRalph Squillace氏が
Docker Desktop+wasm preview with the https://github.com/second-state/runwasi will not be any problem for using future shims. It’s a great way to get started here!
Docker Desktop+wasmのプレビューで使われているrunwasiは、将来のshimとして問題ないでしょう。これは素晴らしい出発点だと思います。
と返答し、11月初旬にはDocker、SecondState、Deislabsらが共同で作業を始めていることを明かしました。
runwasiは、その名前から想像できるようにWASIに対応したWebAssemblyランタイムをcontainerd管理下でコンテナのように実行できるshimです。
そして12月の時点で(backpostingと書いているので、おそらくこのツイートの前のいずれかの時点で)、runwasiがcontainerdのプロジェクトに統合されたことが報告されたのです。
backposting, as this site's been flaky for me all day. Congrats to everyone who worked on or with @deislabs's runwasi @containerd shim on its acceptance upstream as a shim project supporting #webassembly in the CNCF. https://t.co/Iu2kFQFQcD & but https://t.co/i85ktG2pTx is there.
— home skillet (@squillace@hachyderm.io) (@ralph_squillace) December 1, 2022
現在、runwasiはcontainerdの傘下となっています。
これによりcontainerdの管理下でrunwasiを通じてWasmEdgeやWasmTimeに代表されるWASI対応のWebAssemblyランタイムをコンテナと同様に実行できるようになる見通しです。
これからのコンテナランタイムはWebAssemblyに対応していく
WebAssemblyの実行をサポートするコンテナランタイムはcontainerdだけでなく、Red Hatが主導して開発しているコンテナランタイムである「crun」も、WebAssemblyランタイムのWasmTimeを利用し,コンテナとしてWebAssemblyを実行する機能を以前から備えています。
containerdやcrunに代表されるように、これからのコンテナランタイムはWebAssemblyランタイムとの統合機能を備えるようになるでしょう。
そしてサーバサイドのアプリケーションやクラウドネイティブなアプリケーションの分野においてもWebAssemblyによるアプリケーションの開発が広がっていくのではないでしょうか。