Multi-Archs Container Images

142 views
Skip to first unread message

clement escoffier

unread,
Jul 20, 2022, 8:58:07 AM7/20/22
to Quarkus Development mailing list

Hello,


TLDR; we will have multi-archs base and builder images soonish

 

As you may have heard, there are more and more ARM machines out there (this email got written on one). 


ARM comes with its own challenges, especially when considering containers. Traditionally, containers use Linux (AMD) 64bits. With the rise of ARM, this is changing, and we can build Linux ARM 64 bits containers. 


It is currently impossible to create an ARM 64 bits container running a native Quarkus executable. The main problem is the lack of an ARM builder image that can take our application and compile it into a Linux ARM 64 bits executable. Also, our proposed base images were not supporting ARM.


To address this problem, I started investigating base and builder images for ARM 64. I have variants for almost all our images (micro, distroless, GraalVM and Mandrel builder images, s2i) for ARM 64. Because it could be hard to choose, I've also built multi-archs variants of all these images (be aware, multi-archs images are just a set of links to multiple platforms images).  


These images are currently available at https://quay.io/user/cescoffi. The next step is to move these images into the Quarkus quay org and change how these images are produced (on https://github.com/quarkusio/quarkus-images). It will be a massive change, as our current way of building the images does not allow us to create multi-archs images. But the work is already done; it needs to be migrated to the repository.


By the way, it's all great, but there is a catch: ARM containers won't run on AMD machines (without an emulation layer, as proposed by Docker Desktop, for example). So, if you are in teams using different architectures, you must be aware of the problem. At the moment, I didn't investigate how to produce multi-archs image embedding Quarkus applications (at least without a manual procedure).


Clement



Mattia Mascia

unread,
Jul 20, 2022, 9:07:17 AM7/20/22
to clement escoffier, Quarkus Development mailing list
Hi Clement,

You should check https://github.com/qiot-project/, which provides a multi-arch build for quarkus.

It was presented during the DevConf.CZ 2022 [1] as well.


Best Regards

Mattia

--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/quarkus-dev/CAKW6fifXfxrn6oJg2_c%2Btxox0MtAO1Qww%2BduHUUZ9C5dNE8mLA%40mail.gmail.com.


--

MATTIA MASCIA

He / Him / His

PRINCIPAL CONSULTANT

 Switzerland  

mma...@redhat.com   

M: +41 (0) 79 41 14 377  RingCentral: +41 (32) 7209255

clement escoffier

unread,
Jul 20, 2022, 9:16:05 AM7/20/22
to Mattia Mascia, Quarkus Development mailing list
Thanks! 

I had a look a few weeks ago. It's very close to what we are proposing here. 
There are a few differences:

- you use Dockerfile as input - we use code as input (describing docker file) - this makes the maintenance a lot easier (we have more than 20 images to maintain). For example, changing the ubi base image is a single-line change. We also use "modules" a lot (mandrel is a module, graalvm is a module)
- you use qemu - we are using buildx (while the qemu approach is very nice, I failed to run it on my laptop)

Clement

Mattia Mascia

unread,
Jul 20, 2022, 9:31:59 AM7/20/22
to clement escoffier, Quarkus Development mailing list, Andrea Battaglia
Hi Clement,

We have a weekly team meeting every Thursday at 16:00 CEST.
Would you like to participate so we can find a common approach?

Best

Mattia

clement escoffier

unread,
Jul 20, 2022, 9:41:22 AM7/20/22
to Mattia Mascia, Quarkus Development mailing list, Andrea Battaglia
Sure, that works for me!

Clement


Andrea Battaglia

unread,
Jul 20, 2022, 11:58:05 AM7/20/22
to Quarkus Development mailing list
Hi Clement,

it is great to hear from you.
Ben (Github id bentaljaard), the creator and lead behind our multiarch builders, will be happy to guide you through our implementation.

The QIoT community meeting is open, scheduled weekly on Thursday at 4 pm CEST.
Link to your call: meet.google.com/ydq-aewg-vuc

Please find below the links to the Repos on Github:
You can also find some interesting posts on our official blog: https://qiot-project.github.io/


Looking forward to our next meeting,

Andrea

clement escoffier

unread,
Jul 20, 2022, 12:48:58 PM7/20/22
to abat...@redhat.com, Quarkus Development mailing list
Thanks! I will be there! See you tomorrow!

Clement

Max Rydahl Andersen

unread,
Aug 2, 2022, 5:18:32 AM8/2/22
to clement escoffier, abat...@redhat.com, Quarkus Development mailing list

Where there any outcome of this meet-up?

I know Galder had to revert commits on quarkus-images dealing with multiarch so we could actually get a release out of base images.

Would be good to hear if we found a path forward for multi arch ?

/max

Mattia Mascia

unread,
Aug 2, 2022, 5:58:16 AM8/2/22
to mand...@redhat.com, clement escoffier, abat...@redhat.com, Quarkus Development mailing list, Ben Taljaard
Hi Max,

We had a preliminary discussion with @clement escoffier showing the work about multi-archs in the quarkus-images project [1].

We showed the approach of QIoT team here [2][3][4].

The outcome is that once Clement is back, we will work together to have a standard approach.

@Andrea Battaglia feels free to add more info if needed.

Best

Mattia


Max Rydahl Andersen

unread,
Aug 2, 2022, 6:09:04 AM8/2/22
to Mattia Mascia, clement escoffier, abat...@redhat.com, Quarkus Development mailing list, Ben Taljaard

great - thanks for the update.

Reply all
Reply to author
Forward
0 new messages