Installing Docker and Docker-Compose on ARM-based Systems

When I heard about Apple’s M1 chip and its incredible performance, I set out to understand what's so magical about it. Within minutes of research, I found out about the ARM-based architecture it uses. Of course, there are many other improvements, but ARM-based chip was the essence of it.

I could see AWS too came up with its own series of ARM-based Graviton instances. So, I decided to try out a low-end t4g.micro instance with a free trial until March 31st, 2021.

I soon realized that not all applications/packages are compatible. Some are still in the progress of porting to ARM-based architecture and going to take some time for a complete transition.

As most of my projects are deployed using docker and docker-compose, I tried to install them first. Fortunately, docker got installed smoothly, but then docker-compose was not :(

After some trial and error, I installed it from a custom image on LinuxServer.io.

To install docker:

yum install docker

To install docker-compose:

curl -L https://github.com/linuxserver/docker-docker-compose/releases/download/1.28.5-ls32/docker-compose-armhf | sudo tee /usr/local/bin/docker-compose >/dev/null

You can change the version with the latest available from their releases section here or you can build it locally using instructions here.

After docker and docker-compose, your container images should also support ARM architecture, to be able to deploy the stack successfully.

For example, I tried to deploy my Wordpress website and realized that MySQL still doesn't have support. So, I was forced to use MariaDB instead.

I did get my stack (Wordpress website — Nginx, MariaDB, PHP & certbot) working though and after that, it was a piece of cake!
I executed some tests and could immediately say that the performance of t4g.micro is much better than t3.micro (have X86 traditional architecture).
The best part is you get t4g at a lower price than t3 :)

I'm using it for almost a month now and feel that it could be used for production workloads reliably. Docker makes it easily portable to other ARM-based instances. So, try it out and let me know your thoughts in the comments.

I’m a solution architect and passionate about solving problems using technologies.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store