This is my fourth #DaysOfArm article that tracks some of the experiences that I’ve had so far. And just to recap from the first post (here) on June 12 2021.
It’s been just over 2 weeks since the launch of Ampere Arm deployed in Oracle Cloud Infrastructure (OCI). Check this article out to learn more (here). And it’s been about one week since I started looking into the new architecture and deployment, since I started provisioning the VM.Standard.A1.Flex Compute Shape on OCI and since I started migrating a specific application that has many different variations to it to test it all out.
This is my next learning.
Continuing with the work that I’ve been doing with the fnproject.io (here), it’s been an interesting learning. The one that I’m going to focus on here is the use of docker and specifically the use of docker images from dockerhub (here).
When building / deploying applications, it is a common practice to base your application upon a pre-existing image. You could think about these are Infrastructure as an Image (IaaI), Platform as an Image (PaaI) or Software as an Image (SaaI).
Here’s a tag listing for fnproject/fn on docker hub.
Notice the OS/Arch? – being amd64. If you try to run it on arm64-based architecture then you’ll either get error:
Or if you include an image like this in your Dockerfile then you’ll see something like this. It may build ok but when you are trying to add it or run a command whilst building it, you will be a similar error.
Docker does have a multi-architecture build process, that enables the process of using images to analyse the platform and pull down the appropriate image. Here is an example for golang.
Docker also has a buildx cli (here) that helps to build on multi-architectures. I hadn’t had a chance to look into this but it’s worth considering.
Learning: Reviewing most of the Infrastructure as an Image and Platform as an Image like programming languages already support this multi-architecture approach. But there maybe corner cases especially if you are building your own images or if ones you are pulling from other sources are building for one architecture.
If you want to try this out yourself or work on your own application, sign-up (here) for the free Oracle Cloud Trial. I’d be interested to hear your experiences and learn from others as well. Leave a comment or contact me at firstname.lastname@example.org if you want to collaborate.
There’s plenty of work to make this more achievable for everyone. And hence sharing this knowledge is the reason why I’m writing this series – #XDaysOfArm. I’ll keep documenting as long as I keep learning.