Docker is open-sourcing three components with the same source code that are used to power the release builds for Docker for Mac and Windows desktop applications.
The three open-source kits can be used by themselves, or they can be combined to form a complete product. According to a post on the Docker blog, the components include HyperKit, which is a lightweight virtualization toolkit on OSX; DataKit, a pipeline framework for distributed components; and VPNKit, a library toolkit for embedding virtual networking. HyperKit is structured as a library, so it can be interfaced with high-level languages using their normal foreign function interfaces, according to Docker, which opens up one area for contribution.
HyperKit includes a complete hypervisor, optimized for lightweight virtual machines, and it can be interfaced with components like VPNKit and DataKit. Right now, it only supports Mac OS X using Mac’s Hypervisor framework, a core component of Docker for Mac.
Anil Madhavapeddy, a Docker engineer, wrote that HyperKit can be used with any applications that need to spin up specialized or short-lived VMs by linking against HyperKit.
The DataKit component will be useful for any situation where someone needs to coordinate processes around data, according to Docker. DataKit can coordinate processes with a Git-compatible file system interface. Since DataKit is being used in Docker for Mac and Windows, Docker also decided to open-source go-p9p, a modern, performant 9P library for Go, according to Docker.
And according to a sample project, DataKit can be used to create a Continuous Integration system in 50 lines of shell scripts by using the project’s repository. Madhavapeddy suggested additional contributions to DataKit since it is still very basic.
The third component, VPNKit, is a networking library that translates between raw Ethernet network traffic and their socket calls in Mac OS X or Windows, according to Docker. VPNKit is based on the MirageOS TCP/IP unikernel stack, and its library is written in OCaml VPNKit will come in handy for those looking for control over their networking protocols in the user space. Or it can be used to build lightweight overlay networks between application components, according to Docker.
Another use for VPNKit is to test network traffic without overhead, or to use it to build lightweight overlay networks between application components.
Docker has a full list of suggested uses and beginner projects for the new components, and it recommended developers file issues in their respective bug trackers as they come across them, or if they have an idea they want to discuss.