Creating Multi-Arch Docker Builds for Linux and Mac Machines

Harshil Soni / Senior JavaScript Developer

Docker has revolutionized containerization, allowing developers to package applications and dependencies into portable containers. However, with the advent of Mac M1 machines, it's crucial to build Docker images that are compatible with both Linux and Mac M1 architectures. In this guide, we will walk through the process of creating multi-architecture Docker builds, using a simple website as an example.

Why Multi-Architecture Builds?

Before we delve into the "how," let's understand the "why."

Multi-architecture builds enable developers to create Docker images that can run seamlessly on different architectures, including the traditional x86_64 (Linux) and the ARM64 (Mac M1) architectures. This flexibility is essential for ensuring your containers work across a diverse range of environments.

Prerequisites

To follow along with this tutorial, you'll need:

  • Docker installed on your development machine.
  • A basic understanding of Docker and containerization.

Step 1: Choose a Base Image

The first step is to select a base image that supports multiple architectures. For this example, we'll use the official Nginx image, which supports multiple architectures.

# Use a multi-architecture base image for Nginx
FROM nginx:latest

Step 2: Create a Dockerfile

Next, create a Dockerfile for your application. In this case, we'll create a simple website using HTML and save it as index.html in the same directory as the Dockerfile.

# Use the base image
FROM nginx:latest

# Copy the HTML file into the container
COPY index.html /usr/share/nginx/html/index.html

Step 3: Build the Docker Image

Now, it's time to build the Docker image. Use the docker buildx command to enable multi-architecture support and build the image.

docker buildx create --use
docker buildx build --platform linux/amd64,linux/arm64 -t my-website:multi-arch .

In the above command:

  • --use sets the newly created builder as the current active builder.
  • --platform specifies the target architectures. Here, we target both Linux x86_64 and ARM64.
  • -t tags the image with a name and version (e.g., my-website:multi-arch).

Step 4: Verify the Built Image

You can check the architectures supported by your image using the docker manifest inspect command:

docker manifest inspect my-website:multi-arch

The output should list both linux/amd64 and linux/arm64 under "platforms."

Step 5: Run the Multi-Arch Docker Image

Now that you've built a multi-architecture Docker image, you can run it on both Linux and Mac M1 machines without any issues. Use the standard docker run command to start a container:

docker run -d -p 8080:80 my-website:multi-arch

Your simple website should now be accessible at http://localhost:8080 on your local machine.

Conclusion

Creating multi-architecture Docker builds is essential for ensuring your containers are compatible with various environments, including Mac M1 machines. By following this step-by-step guide and using a base image that supports multiple architectures, you can seamlessly build and run Docker containers on different platforms. This flexibility is crucial in today's diverse computing landscape.

Happy containerizing!

More articles

MVP Development: A Guide to Building Your Product

Explore the benefits, steps, and mistakes to avoid for MVP Development in 2026. Get best MVP development services from APPGAMBiT.

Read more

Managed AWS Services vs In-House Cloud Management: A Business Guide

Compare AWS managed services vs in-house cloud management on cost, expertise, and speed to find the best fit for your business needs.

Read more

Let's connect

Before You Commit, Let’s Align

Bring your insight, imagination, and the courage to do what others think can’t be done. Bring everything that makes you unique. Together, we will build it.