Docker+Wasm Reaches Technical Preview 2, Includes Three New Runtime Engines

MMS Founder
MMS Sergio De Simone

Article originally posted on InfoQ. Visit InfoQ

Docker has announced the second technical preview of Docker+Wasm, aiming to make it easier to run Wasm workloads and extending runtime support by including Fermyon’s spin, Deislabs’ slight, and Bytecode Alliance’s wasmtime runtime engines.

The three new Wasm engines in Docker+Wasm bring the total number of supported runtimes to four, including WasmEdge, which was already supported in Docker+Wasm technical preview 1. All of them are based on the runwasi library, which recently joined the containerd project.

runwasi is a Rust library that enables running wasm workloads managed through containerd, thus effectively creating the abstraction of a new container type in addition to the Linux container originally supported by containerd. Runwasi as its name implies is based on WASI, a modular system interface for WebAssembly providing a common platform for Wasm runtimes. This means that if a program is compiled to target WASI, it can be run on any WASI-compliant runtime.

A Wasm container typically only includes a compiled Wasm bytecode file, without requiring any additional binary libraries, which makes it much smaller. This also implies a Wasm container is usually much faster to startup and more portable than Linux containers. For example, as WasmEdge co-founder Michael Yuan noted on Twitter, while a “slim” Python container image for Linux is over 40MB, its Wasm container counterpart takes less than 7MB.

Being Wasm containers directly supported by containerd, in order to try out Docker+Wasm technical preview 2 in Docker Desktop latest release, the only required thing is enabling the “Use containerd” option under Settings > Features in development.

To run a Wasm container using wasmtime, you can then execute:

$ docker run --rm --runtime=io.containerd.wasmtime.v1 
--platform=wasi/wasm secondstate/rust-example-hello:latest

Thanks to this, Wasm containers can be run side by side with Linux containers using Docker Compose or other orchestration platforms such as Kubernetes. Additionally, Docker Desktop is able to package a Wasm app into an OCI container by embedding a Wasm runtime in it to enable to share it through a container registry such as DockerHub and others.

About the Author

Subscribe for MMS Newsletter

By signing up, you will receive updates about our latest information.

  • This field is for validation purposes and should be left unchanged.