コンテナランタイムのcontainerdに、WebAssemblyをコンテナとして扱うための「runwasi」が統合。これからのコンテナランタイムはWebAssemblyと統合されていく

2023年2月21日

コンテナランタイムの事実上の標準となっているcontainerdに、WebAssemblyをコンテナとして扱うための「runwasi」が昨年(2022年)12月に統合されていたことが分かりました。

これによりcontanerdはWebAssemblyランタイムとしてWasmtimeとWasmEdgeを正式にサポートし、containerdの管理下でこれらのランタイムを用いてWebAssemblyバイナリの実行が可能になる見通しです。

将来のcontainerdのリリースでこれらの機能が正式版として登場すると見られます。

containerdでWasmEdgeが正式サポート

先月、1月31日にWebAssemblyランタイム「WasmEdge」の開発元であるMichael Yuan氏が次のようなツイートをし、containerdに対応したコンテナランタイムとして、WebAssemblyランタイムであるWasmEdgeが正式にサポートされたことを明らかにしました(これが今回の記事の発端となりました)。

これは、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を統合する仕組みを明らかにしています。

fig

そしてこの発表とほぼ同時に、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のプロジェクトに統合されたことが報告されたのです。

現在、runwasiはcontainerdの傘下となっています

これによりcontainerdの管理下でrunwasiを通じてWasmEdgeやWasmTimeに代表されるWASI対応のWebAssemblyランタイムをコンテナと同様に実行できるようになる見通しです。

これからのコンテナランタイムはWebAssemblyに対応していく

WebAssemblyの実行をサポートするコンテナランタイムはcontainerdだけでなく、Red Hatが主導して開発しているコンテナランタイムである「crun」も、WebAssemblyランタイムのWasmTimeを利用し,コンテナとしてWebAssemblyを実行する機能を以前から備えています。

containerdやcrunに代表されるように、これからのコンテナランタイムはWebAssemblyランタイムとの統合機能を備えるようになるでしょう。

そしてサーバサイドのアプリケーションやクラウドネイティブなアプリケーションの分野においてもWebAssemblyによるアプリケーションの開発が広がっていくのではないでしょうか。

あわせて読みたい

Docker WebAssembly クラウドネイティブ コンテナ型仮想化




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本