News

Docker Open Sources Mac, Windows Components

Docker Inc., having launched a Mac and Windows beta project in March, today announced it's open sourcing key components used to develop that technology.

The limited availability beta program lets developers expand the scope of the open source container technology beyond its Linux origins, wrapping up code and dependencies in portable containers that can be shipped off to run on any compatible host system. These containers can take advantage of the host OS's resources, allowing for smaller packages than can be obtained with more traditional virtual machine (VM) hypervisors.

Now, the specialized components developed to tackle Mac and Windows are available for anyone to use.

These include:

  • HyperKit: A lightweight virtualization toolkit on OSX.
  • DataKit: A modern pipeline framework for distributed components.
  • VPNKit: A library toolkit for embedding virtual networking.

"HyperKit is based around a lightweight approach to virtualization that is possible due to the Hypervisor framework being supplied with MacOS X 10.10 onwards," Docker developer Anil Madhavapeddy said in a blog post today announcing the open sourcing of the components. "HyperKit applications can take advantage of hardware virtualization to run VMs, but without requiring elevated privileges or complex management tool stacks."

How the Components Fit In
[Click on image for larger view.] How the Components Fit In (source: Docker)

"DataKit is a toolkit to coordinate processes with a git-compatible filesystem interface. It revisits the UNIX pipeline concept and the Plan9 9P protocol, but with a modern twist: streams of tree-structured data instead of raw text," Madhavapeddy said. "DataKit lets you define complex workflows between loosely coupled processes using something as simple as shell scripts interacting with a version controlled file-system."

"The VPNKit is a networking library that translates between raw Ethernet network traffic and their equivalent socket calls in MacOS X or Windows," Madhavapeddy continued. "It is based on the MirageOS TCP/IP unikernel stack, and is a library written in OCaml. VPNKit is useful when you need fine-grained control over networking protocols in user-space, with the additional convenience of being extensible in a high-level language."

Madhavapeddy also provided tips on how the components can be used beyond their original Mac and Windows use cases, along with advice about how interested community developers can contribute to further the technologies.

For HyperKit, for example, Docker identified three key areas ripe for community contributions: support for booting more guest OSes beyond Linux; support for more high-level language bindings; and hypervisor features.

Not much can done on DataKit, with only rudimentary GitHub pull request support, which itself could be improved. "DataKit could be used for a very broad set of use cases: share how you use it in your projects," Madhavapeddy said.

Needed contributions for VPNKit are more readily identifiable. "VPNKit provides an interception point for all container traffic going through Docker for Mac or Windows," Madhavapeddy said. "It could be extended with support for packet capture and inspection, protocol proxying to filter for particular traffic patterns, or even HTTP protocol visualization for debugging Web applications."

With more comprehensive support for endpoint types, he said, developers could use VPNKit to test network traffic without having to bother with providing their own test traffic. Also, he said, it could serve to provide simple overlay networks among application components.

"While the VPNKit and DataKit started life as quite specialized components in Docker for Mac and Windows, we are excited by the possibilities enabled by open sourcing them," Madhavapeddy said. "The ideas here are by no means exhaustive, and we are looking forward to hearing about your own projects. Please file issues in their respective bug trackers as you come across them, or if you wish to discuss a particular idea."

About the Author

David Ramel is an editor and writer for Converge360.