DockerコンテナイメージをWebAssemblyに変換、Webブラウザ上での実行も可能にする「container2wasm」バージョン0.3が登場
今回は「DockerコンテナイメージをWebAssemblyに変換、Webブラウザ上での実行も可能にする「container2wasm」バージョン0.3が登場」についてご紹介します。
関連ワード (対応、現時点、開発者等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
DockerコンテナイメージをWebAssemblyに変換し、WebAssemblyランタイム上で実行可能にするツール「container2wasm」のバージョン0.3がリリースされました。
開発者はNTTの徳永航平氏。container2wasmは実験的なツールとしてオープンソースで公開されています。
バージョン0.3では、RISC-Vアーキテクチャに加えてx86_64アーキテクチャのDockerコンテナイメージにも対応したことが大きな変更点です。
実際にDockerコンテナイメージをWebAssemblyに変換したものをWebブラウザ上で実行できるデモページも用意されました。
下記はインテルの64ビットプロセッサを搭載したWindowsマシンのMicrosoft Edgeブラウザでデモページを開き、Vimのデモを起動したところです。
Webブラウザ上でターミナル画面が開き、Vimが起動しました。
DockerコンテナのエコシステムをWebAssemblyで活用
container2wasmは、x86_64アーキテクチャのイメージにはエミュレータのBochsを、RISC-VのイメージにはエミュレータのTinyEMUを用いてWebAssemblyに変換していると説明されています。
下記が実際に変換するときのコマンドの例。「c2w」がコマンド名、ubuntu:22.04がDockerコンテナのイメージ、out.wasmが出力されるWebAssemblyバイナリの名前です。
変換後のWebAssemblyバイナリはWASI(WebAssembly System Interface)に対応しており、WASI対応のWebAssemblyランタイムでも、Webブラウザでも実行可能となっています。
DockerコンテナイメージはLinuxとその上で動くさまざまなアプリケーションが豊富に揃っているため、これがそのままWebAssemblyに変換して実行できることが実用化されれば、WebAssemblyのエコシステムに大きなインパクトを与えそうです。
このcontainer2wasmの開発動機には、まさにそのようなことが示されていました。下記はGitHubのReadmeからの引用です。
Though more and more programming languages start to support WASM, it’s not easy to run the existing programs on WASM. This sometimes requires re-implementing and re-compiling them and costs extra time for development. This is a PoC converter tries to solve it by enabling running unmodified containers on WASM.
WASMをサポートするプログラミング言語は増えてきていますが、既存のプログラムをWASMで動かすのは容易ではありません。再実装や再コンパイルが必要になることもあり、開発に時間がかかってしまいます。このPoCコンバータは、コンテナを変更することなくWASMで実行できるようにすることで、これを解決しようとするものです。
現時点ではまだ実験的プロジェクトの位置づけではありますが、今後の展開が楽しみな取り組みと言えます。