How to compile Docker on Windows

After taking on my new role at the Azure Linux Team, my first assignment was to get the Docker command line interface working on Windows. This is an important piece in bringing Docker into the Windows ecosystem and part of our partnership with Docker.

Today, I am proud to announce that the first piece of Windows code is now merged into Docker, which means you can now compile the Docker client on Windows!

Before going any further, I would like to clarify several things:

Clarifications
  • At this point, the merged code is only the first step in getting it compiling and (barely) working on Windows. We have a set of known bugs (see PR description), which we are looking forward to fix and I am pretty sure there are more bugs beyond that. Making something designed for UNIX work on Windows seamlessly is not a trivial task. In the upcoming days, I will be focusing on resolving those bugs. We are also looking forward to seeing your contributions to make Docker’s Windows support better.

  • Also, please note that this tutorial is not about running the Docker daemon on Windows or running Windows containers on Docker. None of these are possible today. This is just about getting client code compiled on Windows.

  • I will not be talking about how the porting work was done, that will be topic of another blog post here on my blog, again. Stay tuned for that one!

  • Please note that the docker.exe you are about to build is not a supported distribution by Microsoft or Docker. Please use it at your own risk. A more stable version of the Docker Windows CLI will be shipped later.

Step 1: Install Go

Download the Go MSI Installer from golang.org. This installation will add the go program to your PATH environment variable and you should be able to run the go command in cmd.exe. If that does not work, you may need a restart.

Step 2: Check out the code

Assuming you have Git installed on your system, you need to clone thedocker/docker repository locally:

git clone https://github.com/docker/docker.git c:\gopath\src\github.com\docker\docker

Step 3: Compile!

The rest is just as simple. Run cmd.exe and run the following commands in order:

set GOPATH=c:\gopath;c:\gopath\src\github.com\docker\docker\vendor
set DOCKER_CLIENTONLY=1
cd c:\gopath\src\github.com\docker\docker\docker
go build -v

If all goes well, you will end up with a lovely docker.exe on the directory you are at! ♥

(If you happen to run in problems about emulating TTY (linux terminal) in cmd.exe, you need to use ConEmu or install ANSICON. Please see the pull request description for detailed info.)

Summary

This is just an intro to building the Docker CLI for Windows. Normally, these binaries are built in a Linux environment, inside a Docker container (yes, Go is crazy like that, it can cross compile Windows binaries on Linux)! However, for demonstration purposes we are detailing the procedure for building these Windows binaries on its own turf.

In the meantime, you can use this tutorial to build Docker on your Windows machine to test the changes. We are looking forward to your contributions on making the Docker’s Windows support even better!

If you happen to find a bug, please open an issue on [Docker repo] and mention me cc: @ahmetalpbalkan in the description.

I would like to acknowledge help of the Docker developer community on getting this work reviewed and merged to Docker. We are looking forward to make it more stable and shippable soon!

There is some Windows code now living in Docker! ♥

(This article has appeared on Azure BlogDocker WeeklyInfoQThe Register.)

If you like to watch a step-by-step video of this tutorial, there’s one in German by Joern Boeger here.

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐