Docker / Projects · June 18, 2021

Meet RockARM! The Docker Cluster.. 3D Printed!

I’m so excited to share this project! This combines just about everything that I love in projects: 3D printing, containers, building, design, and the pursuit of low-power efficiency! Okay, so what is this? Let’s start with a little background, and context first:

We all have some form of a home lab, right? Anything from an old desktop computer with some extra RAM and disk capacity scraped together so we can run various things, to full-blown rackmount enterprise hardware, making a ton of noise, consuming a ton of power, generating a TON of heat. We NEED that monster home lab setup, right?! Of course!

There is a better way

Today, ARM processors are getting more and more powerful. What was once only for low-powered mobile devices and embedded systems, is quietly sneaking up on the aging x86 CPU architecture, dominated by Intel and AMD. This has made news in a big way, with Apple announcing their switch completely away from Intel processors, to their own in-house developed, ARM-based chips, not just for iPhones and iPads, but across their very powerful Mac product line (I have a Macbook Pro with the new Apple silicon M1 ARM-based chip, it’s crazy fast!). They are more than just a CPU in that chip: CPU cores, GPU cores, insanely-fast unified RAM, Machine Learning (ML) Neural Engine cores, Secure Enclave, and more… all on a single silicon die. Impressive! More on that here. Okay, so what. What does any of that have to do with this project?

ARM is here to stay. x86 is a dying architecture.

In the Docker Container world, if you spend a little time browsing your favorite packages on https://hub.docker.com and I encourage you to do so if you’re not already familiar.. you’ll likely notice many of these available container images have an ARM architecture flavor available. they’ll usually be labeled ARMv7 (one generation back in the common ARM architecture, typically considered ARM 32-bit) and ARMv8 or ARM64. These container images are compiled specifically to run on ARM-based systems.

ARM + Docker: The perfect match

One of the really great things about running your applications in Docker vs. running each of them as individual Virtual Machines, is a massive savings in RAM usage. In containers, you no longer have the huge overhead of the Operating System’s RAM requirements, just to run a single app, such as Plex, Nextcloud, OpenProject, and so on. Containers play nicely with others, and share the underlying resources of their host. This means each application just needs enough memory for its’ processes; none of the added overhead of a full-blown OS!

With ARM systems, such as Raspberry Pi, or in our case, the even more powerful RockPi 4, You are still constrained by RAM availability. In our project here, each node in the cluster has 4GB of RAM. This does not sound like a lot, and for anyone capable of counting higher than three.. 🙂 you’re right, it is not a lot, but the beauty of Docker containers is you don’t need a lot of RAM. You need decent processing power (check!), fast disk I/O (check!), and in our case, the ability to cheaply scale your hardware solution to meet your needs (and check!). For reference, each node in our cluster will cost you under $100 USD.

In this project, we’re going to be building a four-node cluster, with a fifth node dedicated to storage: The storage node has two 3.5” hard disks (or SSD’s if you prefer!) serving up 16 TB of mirrored storage. This will take care of all your NFS mounts for your containers, so they can move around and load-balance across the four dedicated compute nodes, as well as any general storage you may need: SMB / CIFS, iSCSI block storage, and even S3-compatible object storage!

This is your new home lab! It’s compact, quiet, power-efficient, and if I do say so myself, an attractive appliance that’s welcome on any bookshelf! No longer do you have to hide your lab equipment in a closet to keep all the unsightly cables and flashing lights from driving your partner crazy (hey, we all think it looks cool right?! Oh well), This will easily handle all your lab workloads, save you on energy, space, heat, all while looking good doing it!

Oh, and… You are going to build it! 3D print it, assemble it, install the software, all yourself! Join me on this project, let me know in the comments what you think of this! The first video in the build series will be coming soon, so if you’re not already subscribed, please head over to my YouTube channel, hit that subscribe button, hit the notification bell so you don’t miss out! In case you missed it, here’s the release video for this project:

YouTube player