At CloudNativeCon + KubeCon (December 6-8 in Austin, TX), InfoSiftr demonstrated an app running across multiple architectures, all based on a single Dockerfile.
The application – a network traffic generator – ran on Arm 32-bit machines and Arm 64-bit machines, with a web interface component running on x86 architecture (i.e. a typical Windows laptop). It allowed users to select which ARM machines should generate network traffic via a web-based GUI, then see the traffic generated real time on a network switch.
“This demo showcases the power of Docker’s multi-architecture support,” says Tianon Gravi, InfoSiftr’s SVP of Operations. “Assuming you’ve built your images correctly, and set up your Dockerfile correctly, Docker’s multi-architecture support allows you to run your image the same way on any architecture.”
Docker, Inc. announced multi-architecture awareness for Docker official images earlier this year, an “important UX improvement” that would allow users to pull and run the correct image using the same commands, regardless of platform. (Previously, images for non-x86 Linux architectures had to be accessed from a different namespace or using a different tag.)
Tianon says users can get the same seamless experience for their custom images, combining multiple architectures under one namespace. However, the process can be a bit involved. According to Tianon, enabling multi-architecture requires three major steps:
- Update your Dockerfile to be multi-platform aware (this means making sure any packages it installs are available for the platform, which in some cases may involve modifying your application to not require those packages)
- Build the images successfully on all the platforms you want to target
- Use a tool like manifest-tool to combine all those images you’ve built into a single image reference, which can be accessed from the command line
Tianon was instrumental in getting multi-arch to work for IBM’s System z. His work on InfoSiftr’s Docker on Arm demo is a modest (but user-friendly) demonstration of InfoSiftr’s multi-arch expertise.
Want to recreate InfoSiftr’s Docker on Arm demo? Check out Tianon’s GitHub repo, complete with a README.