DockerコンテナイメージをWebAssemblyに変換、Webブラウザ上での実行も可能にする「container2wasm」バージョン0.3が登場
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バイナリの名前です。
$ c2w ubuntu:22.04 out.wasm
変換後の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で実行できるようにすることで、これを解決しようとするものです。
現時点ではまだ実験的プロジェクトの位置づけではありますが、今後の展開が楽しみな取り組みと言えます。
関連記事
このcontainer2wasmを用いて、Webブラウザ上でVSCodeからDockerコンテナを読み込んで同一ブラウザ上のWebAssemblyで実行するという、VSCode用の拡張機能「vscode-container-wasm」が登場しました。
あわせて読みたい
AWS LambdaでRuby 3.2の利用が可能に、初のRuby 3.xサポート。Ruby 2.7のサポートは2023年12月で終了
≪前の記事
MySQLを7000インスタンス規模で運用するLINEは、MySQL互換のNewSQLをどう評価したか?[PR]