Docker DesktopがWebAssemblyランタイムを統合。コンテナと同様にWebAssemblyイメージを実行可能に

2022年10月26日

Docker Desktopを提供するDocker社は、Docker DesktopにWebAssemblyランタイムを統合することによる、Docker DesktopのWebAssembly対応版のテクニカルプレビューを発表しました

またDocker社はこれに合わせて、WebAssemblyをあらゆるプラットフォームでセキュアに実行できるようにするための仕様策定と実装を進めている団体「Bytecode Alliance」への加盟も発表しました。

DockerにWASMランタイムのWasmEdgeを統合

下記の図がDocker DesktopにWebAssemblyを統合した仕組みを示しています。

左側と中央は通常のDockerコンテナを利用する場合の仕組みです。Docker Engineは主にコンテナイメージの管理などを行う高レベルランタイムの「containerd」と、主にコンテナのプロセスを管理する低レベルランタイムの「runc」から構成されており、その間を「containerd-shim」と呼ばれるプロセスがつないでいます。

fig

そして図の右がDocker Desktopに新たに加わったWebAssemblyサポートのための仕組みです。WebAssemblyランタイムのWasmEdgeが組み込まれており、これを高レベルランタイムのcontainerdから「container-wasm-shim」経由で操作することになります。

これにより、dockerコマンドの引数によってWebAssemblyランタイムでの実行やWebAssemblyイメージの指定など、Dockerによるコンテナの操作と同じようにDockerを通じてWebAssemblyアプリケーションの実行が行えるようになるわけです。

WebAssemblyランタイムとして採用されたWasmEdgeは、Cloud Native Computing Foundationのインキュベーションプロジェクトとして開発されているWebAssemblyランタイムで、Dockerコンテナの業界標準であるOCI(Open Container Interface)に対応しているのが大きな特徴です。

WebAssemblyとDockerは共存共栄の道を進むか?

WebAssemblyは高速に起動するバイナリイメージやモジュールごとにセキュアに分離された空間を備えるなど、Dockerコンテナが備えている特徴と非常に似た特徴を備えている上に、ByteCode Allianceにより標準化が進められているWASIによってクロスプラットフォーム対応も進んでいることで、非常に注目度が高まっている技術です。

WebAssemblyは将来的に、現在のDockerコンテナの技術を置き換えてしまうのではないか、という見方も存在します。

例えばDockerコンテナの技術の生みの親であるSolomon Hykes氏は、WebAssemblyがDockerを置き換えることはないだろうとしながらも、もしもDockerコンテナの技術を開発する以前の2008年にWebAssemblyとWASIが存在していたら自分はDockerを開発する必要などなかっただろうと過去に発言しています。

WebAssemblyはこのように重要視されている一方で、現時点ではソースコードをコンパイルしてWebAssemblyバイナリを生成し、テストし、デプロイするためのツールチェーンや、生成されたバイナリを集中管理するためのリポジトリなど、周辺ツールのエコシステムはまだ貧弱なままであると言わざるを得ません。

今回、Docker DesktopがWebAssemblyをサポートすることで、サードパーティも含むDocker関連のビルド、テスト、デプロイ、リポジトリなど非常に豊富に揃っているDockerのエコシステム全体でもWebAssemblyをサポートするようになれば、WebAssemblyのエコシステムは急速に整備されていくことになるでしょう。

そしてDockerのエコシステムをWebAssembly方面へ拡張できれば、WebAssemblyの発展がDockerの脅威ではなくDockerエコシステムの発展へとつなげられます。

WebAssemblyを新種のコンテナと位置づけてDockerのエコシステムの一部として取り込む。これによりDockerとWebAssemblyの共存共栄をはかっていく目論見が、今回のDocker DesktopによるWebAssemblyサポートの狙いとしてあるのだと考えられます。

蛇足ですがSolomon Hykes氏、今回の発表を高く評価しているようです。

あわせて読みたい

Docker WebAssembly コンテナ型仮想化 Docker Desktop




タグクラウド

クラウド
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本