This post provides the steps required to build a Docker daemon for 32-bit Linux platforms.
Software today is driven by speed–move fast, learn fast, and deliver fast! Nirmata, my company, enables software developers to move fast by making it super easy to deploy, operate, and optimize their containerized applications. Nirmata builds on Docker, the most popular container technology around. Docker is commonly used in x64 architectures and with popular Linux distros’ like Ubuntu, RHEL, and CoreOS. However, there continues to be a steady demand for deploying containers on other platforms and architectures like Yocto, Kali Linux, and 32-bit architectures.
At Nirmata, we are working with a customer in the IoT space who requires a 32-bit Docker daemon. Although Docker continues to add support for many platforms and architectures, it does not seem like official 32-bit support is coming anytime soon (issue #136). There is an existing blog post, which helps build Docker on a 32-bit platform, but a lot has changed in Docker world since then.
In this post, I have documented the steps I used to build and use Docker on 32-bit platforms:
Docker docs provide a well-detailed instruction set for setting up a dev environment, however, it doesn’t provide any instructions to build a Docker daemon for a 32-bit platform.
Docker provides a Dockerfile in the root directory of its Git repository for building a Docker dev environment. The Dockerfile builds a base image, which has all the tools and binaries required for building a Docker daemon binary. For building a daemon compatible with 32-bit, one can follow the same steps the Docker doc suggests, with the following changes to the Dockerfile.
- Use a 32-bit Ubuntu image as the base image
- Use clang-3.6 version
- Install Go for a 32-bit platform
Note: These steps are tested on an Ubuntu virtual machine with at least 2GB memory, but should work the same on any x86_64 Linux distribution.
Here are the complete steps to build a 32-bit Docker daemon from the Docker GitHub branch:
$ sudo apt-get install git-all
$ sudo apt-get install build-essential
$ git clone https://github.com/docker/docker.git $ cd docker/ $ mv Dockerfile Dockerfile.backup
$ wget https://gist.githubusercontent.com/prateekgogia/05f058bafbccc2478fcc/raw/1db60ea471678cfb55185215defcf371f7dcec1d/Dockerfile
$ make build
$ make binary
A docker binary for a 32-bit platform will be generated in directory – "bundles/latest/binary."
A 32-bit Docker daemon will only support 32-bit container images. There are a few 32-bit images available on the Docker hub. If you are using Go, you can also create a static container with a 32-bit binary to run images on a 32-bit Linux Platform.
It’s a great time to be a software developer, and at Nirmata we are excited to be building a platform that empowers developers by allowing them to focus on their applications, while we help take care of the heavy lifting for applications, operations, and management.
I hope this brief post helps you with your software adventures! For any further questions feel free to reach out to me at firstname.lastname@example.org.
You can explore Nirmata at: http://try.nirmata.io