Multi-architecture is not something that most people think about - everyone assumes that the only architecture that counts is x86_64, but that's not the case!
In my job at Red Hat I care about making sure that software running on ppc64le, arm64 and s390x behaves just the same as it does on x86_64, which brings me to containers. Did you know that container images are architecture specific?
It makes sense, right? Containers contain software, and often software is architecture specific. When you pull down a container, you never specify an architecture to use. So how does that work? And more importantly to us developers, how do I ensure my containers are multiarch-aware and "just work" no matter which platform we are running on?
[Aside: From here on in I'm going to use the term amd64 in lieu of x86_64. You can read more about that here. Likewise you might be wondering why we use arm64 instead of aarch64, you can read about that too. And if that's not enough, here's a nice link on golang architectures]
A simple application we want to containerise
To begin with, let's build a simple Flask python application. Something that is super trivial, but can demonstrate software running in a container. To that end, I present you moo-chop. It just prints a hello world message in a random colour, like this: