Prototype multi-platform support for building, pushing and pulling Docker images that can run on multiple operating systems and CPU architectures (such as X86-64 and ARM)

Greater stability and maturity

Docker is a platform that provides tools, APIs and formats for building, shipping and running apps of all kinds and Docker now supports containers based on the two most popular operating systems in use today: Linux and Windows. We’re excited that the power of Docker is becoming available to developers and sysadmins who develop and run code on Windows.

Docker Engine multi-platform support combined with Container-as-a-Service (CaaS) management software like Docker Universal Control Plane and Docker Trusted Registry means that Docker can help bridge the gap between “Linux” and “Windows” developer and ops teams by providing a shared framework to describe how apps are built, shipped and run.

Getting Started

Check out the Microsoft docs to setup a working Windows Server 2016 TP5 system either on Azure, in a VM (works with both Hyper-V on Windows and VirtualBox on OS X) or as a bare-metal install.

(Building and running Docker containers natively on Windows Server is currently a separate process from installing Docker for Windows or Docker Toolbox which set up a Desktop machines to run Docker Linux containers on a Windows).

Once setup, the most convenient approach is to use the Windows Server 2016 / Docker Engine combination remotely from a machine with development tools and editors installed (instead of trying to install them on Windows Server). This can be done by setting DOCKER_HOST to reference the Windows Server host on the development machine. Check that everything is ready:

This should look familiar to Docker users on OS X or Linux and that commonality will enable developers and operators use Docker to seamlessly manage workloads on both Linux and Windows.

Docker Hub and Windows images

With today’s release, we’ve enabled full push-pull support of Docker images based on Windows Server on Docker Hub, including for private repos and organizations. Users can start sharing Docker images based on Windows Server with team-members and the wider community on Hub. This is the first step towards expanding the scope of content on Hub to new operating systems and CPU architectures, maintained both by the community and by Docker.

We’re looking forward to building on these efforts with the community so that Docker Hub will be a great place to get proven and secure Windows Server base images for popular programming languages and developer tools.

Multi-Platform Support

Docker is becoming available on more operating systems and CPU architectures, and we’re working on tools and APIs that let developers use Docker seamlessly in heterogeneous environments. The goal is for docker pull golang (and similar) to fetch a Docker image built and optimized for whatever platform the Docker engine is currently running on, be that Linux or Windows on x86-64, ARM or System/390.

To accomplish this, the latest version of the Docker Image Manifest format supports manifest lists. These are lists of pointers to actual image manifests with metadata about the CPU architecture and operating system for each entry in the list. When doing docker pull of a multi-platform image, the Docker registry will serve the manifest list and the engine then fetches the appropriate image for the system it’s running on.

As of today, Docker Hub has beta multi-platform support. Phil Estes has written an awesome tool for creating manifests lists from existing images, and for pushing the result to registries. Building on the golang example above, we can create a multi-platform golang image:

Multi-platform is an important building block in making Docker a great tool for managing apps and services that run across different operating systems and hardware. Start experimenting with multi-platform images today using either a private registry or using Docker Hub. We’re looking forward to community and partner feedback. And we’re looking forward to improving multi-platform support in the coming months, including:

Docker on Windows Server 2016 Technical Preview 5

Michael is a Docker Alum who used to work on the Docker and Microsoft technology partnership. Previously he was at Heroku and before that he co-founded AppHarbor, a .NET platform as a service. Michael tweets @friism.