WebAssembly: Docker without containers!

By Rafael Fernández López

Elevator Pitch

Docker introduced a user experience most developers know and love. Although Docker is a synonym of containers, what if it did not have to be that way? Join us in this talk to find out how Docker is embracing WebAssembly, allowing developers to reuse the workflows they already know and love.

Description

In this talk we will describe how you can use Docker without containers, or more specifically, how you can mix and match containers and WebAssembly modules and what is the benefit of doing so.

Docker is a well-known project, used in a variety of situations and setups. Among other innovations, Docker introduced a user experience of building, publishing, running execution units – containers –, that meant a huge step forward in how we think about software. It suddenly became easier to reproduce complex setups in heterogeneous environments. We could split our application if desired, and produce container images that we could ship in a registry for others to consume and run.

Among many of the innovations, Docker streamlined the concept of a container as a mix of different isolation technologies present in the Linux kernel such as cgroups and namespaces in a very easy way to consume from a developer or integrator perspective. However, containers at this layer are very tied to the Operating System interface, and specifically to Linux. Although other isolation techniques exist in other Operating Systems, such as FreeBSD’s jails, they are again tied to the Operating System layer.

What if we could abstract ourselves away from the Operating System? Something such as a native target we can compile our programs to. Executing our programs would be a matter of starting a Virtual Machine that is able to execute our programs built for this target; and this Virtual Machine would be the responsible for interacting with the Operating System that is beneath, effectively making our programs multi-platform.

And this is where we are today with WebAssembly. Join us on this talk to find out how Docker is integrating these two worlds together, so that we, developers, can take advantage of the best of both worlds. This talk will provide an overview and demonstration of current capabilities.

Notes

At the WasmLabs at the VMware’s Office of the CTO, we have the mission to grow and improve the WebAssembly ecosystem. We are working on a centralised, trusted and well-known place where users and developers can download language interpreters compiled to WebAssembly so that they can run and reuse them in an easy and safe way. We have also ported the PHP interpreter to WebAssembly + WASI and are in the process of contributing these changes upstream.

We have participated in events such as the Docker Community All-Hands presenting the integration of Docker and WebAssembly, and specifically how WebAssembly can be used as a target to compile interpreters such as PHP.