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

The Arrows, Not the Boxes: Systems Thinking for AWS Architects

You can configure an ALB flawlessly and explain IAM policies from memory. But can you articulate why an ALB is better than an NLB for your specific constraints? The different between "knowing AWS services" and "thinking in systems" is what separates engineers who implement from architects who design.

Read more

AWS CodeCommit Returns: What the Reversal Means for You

In an unprecedented reversal, AWS has restored CodeCommit to general availability after deprecating it in July 2024. This decision validates teams that remained committed to AWS-native git repositories while leaving migrated teams questioning their investment.

Read more

Tell us about your project

Our office

  • 425, Avadh Kontina
    Vip Road, Canal Road Corner, near CB patel club
    Surat, Gujarat 395007
    Google Map

© 2025 APPGAMBiT. All rights reserved.