Cloud Native Blog - Container Solutions

Docker gets ARMed

Written by Adrian Mouat | Apr 24, 2019 2:08:32 PM

If you're not interested in CPU architectures, today's announcement on Docker's partnership with ARM may sound a little boring. But I think it's important and hints at a better future for developers that need to support non x86 architectures. And that may well include your future self, given the growing importance of edge computing and the always expanding Internet of Things.

Bret Fisher, a fellow member of the Docker Captains group, brought up how relevant recent comments on the popularity of ARM servers by Linus Torvalds were. Linus argues that the dominance of x86 servers is in no small part because people's home development machines were also x86. In other words, developers avoid ARM servers because of the extra work involved going from development to deployment, regardless of the potential cost savings from more efficient hardware. Removing friction between development and deployment is Docker's raison d'etre, and this partnership has the potential to encourage developers onto cheaper and greener platforms.

At the moment, if you want to build and deploy to an ARM architecture you have a few choices. You can use a machine with the same architecture to develop on, but you are likely to find that such machines are underpowered when compiling and running IDEs. So instead, you could develop on an x86 machine, then build and test on a separate ARM machine. But this adds extra steps, latency and the potential for bugs to the process. Another option is to cross-compile and use emulation when developing and testing. This works today, and is supported by Docker, but the process is a little tricky and non-intuitive. Today's announcement means that it will be a first class feature of Docker and promises a bright future for a range of developers, from Raspberry Pi enthusiasts, IoT developers and edge compute specialists.

New versions of Docker for Desktop for Mac and Windows will include new features and integrations that make it trivial to build and run ARM images out-of-the-box with no configuration. The underlying technology is also available in the Linux CE version of Docker, but you will need a reasonably recent kernel version with the appropriate binfmt handlers registered (run docker run --rm --privileged hypriot/qemu-register to do this automatically).

Docker's tagline is "Securely build, share and run any application, anywhere". This announcement brings that goal closer to reality for a large section of the industry.

Thanks to Dieter Reuter for his help with this article!

Looking for a new challenge? We're hiring!