To make Docker use the Linux/amd64 platform by default on macOS, we can change some settings in Docker Desktop and use Docker Buildx. This helps our Docker containers run on the Linux/amd64 system. It is important for some images and apps, especially when we use Apple Silicon (M1/M2) chips that usually use ARM. With these steps, we can make our dockerized work easier and avoid problems with different architectures.
In this article, we will look at different ways to set Linux/amd64 as the default platform for Docker on macOS. We will show how to change Docker Desktop settings for this platform. We will also see how to use Docker Buildx to pick the right architecture and pull Linux/amd64 images smoothly. Plus, we will talk about how to check if Docker is using the right platform. We will answer some common questions too. Here is what we will talk about:
- How to Force Docker to Use the Linux/amd64 Platform by Default on macOS
- How to Configure Docker Desktop Settings for Linux/amd64 Platform
- How to Use Docker Buildx to Specify Linux/amd64 Platform
- How to Set Up a Dockerfile for Linux/amd64 Compatibility
- How to Pull Linux/amd64 Images on macOS
- How to Verify Docker is Using Linux/amd64 Platform
- Frequently Asked Questions
For more information about Docker and what it can do, we can read what is Docker and why should you use it and how does Docker differ from virtual machines.
How to Configure Docker Desktop Settings for Linux/amd64 Platform
To set up Docker Desktop on macOS to use the Linux/amd64 platform by default, we can follow these steps:
Open Docker Desktop: We need to start Docker Desktop from the Applications folder.
Access Preferences: Click on the Docker icon in the menu bar. Then we select “Preferences” from the dropdown.
Set Default Architecture:
- Go to the “Experimental Features” section.
- We enable the option for “Use Rosetta for x86/amd64 emulation on Apple Silicon”.
Advanced Settings: Now we go to the “Resources” tab. Here we can change the CPU and Memory settings to get better performance on the Linux/amd64 architecture.
Apply and Restart: We click “Apply & Restart” to save our changes and restart Docker Desktop.
After we do these steps, Docker will focus on the Linux/amd64 platform for running containers on our macOS system. This setting helps a lot with images made for the amd64 architecture. If we want to learn more about Docker Desktop features, we can check this article on Docker Desktop.
How to Use Docker Buildx to Specify Linux/amd64 Platform
To use Docker Buildx for Linux/amd64 platform, we need to make sure Docker Buildx is installed and set up right. Docker Buildx helps us build images for different architectures.
Enable Experimental Features: First, we need to make Docker ready to use BuildKit. We set this environment variable in our shell:
export DOCKER_BUILDKIT=1Create a New Buildx Builder Instance: If we don’t have a Buildx builder instance yet, we can make one with:
docker buildx create --name mybuilderSet the Buildx Builder: Next, we use the builder we just made:
docker buildx use mybuilderInspect Available Platforms: We can check the platforms we can use with our builder:
docker buildx inspect --bootstrapBuild for Linux/amd64: When we build our Docker image, we need to say which platform we want with the
--platformflag. For example:docker buildx build --platform linux/amd64 -t myimage:latest .Pushing the Image: After we build the image, we can push it by adding the
--pushflag:docker buildx build --platform linux/amd64 --push -t myimage:latest .
By doing these steps, we can use Docker Buildx to set the Linux/amd64 platform for our Docker images. This helps with compatibility and good performance on macOS. For more details on Docker Buildx, check the Docker BuildKit documentation.
How to Set Up a Dockerfile for Linux/amd64 Compatibility
To make sure our Dockerfile works well with the Linux/amd64 platform, we can follow these simple steps:
Specify the Base Image: We need a base image that supports amd64 architecture. The official Ubuntu image is a good option for us.
FROM ubuntu:20.04Set the Architecture: We can clearly set the target architecture in the Dockerfile. We use the
--platformflag with theFROMinstruction.FROM --platform=linux/amd64 ubuntu:20.04Use Multi-Stage Builds: If our application needs different dependencies for building and running, we can use multi-stage builds. This will help us keep the final image smaller.
# Build stage FROM --platform=linux/amd64 golang:1.16 AS builder WORKDIR /app COPY . . RUN go build -o myapp # Final stage FROM --platform=linux/amd64 alpine:latest COPY --from=builder /app/myapp /usr/local/bin/myapp CMD ["myapp"]Install Dependencies: We should install packages and dependencies that work with the amd64 architecture. For Debian-based images, we can use
apt-get.RUN apt-get update && apt-get install -y \ curl \ vim \ && rm -rf /var/lib/apt/lists/*Set Environment Variables: We need to use environment variables that fit our application.
ENV APP_ENV=productionExpose Necessary Ports: We must specify the ports that our application will use.
EXPOSE 8080Define Entrypoint or Command: We should say how to run our application inside the container.
ENTRYPOINT ["myapp"]
By following these steps, we can create a Dockerfile that works well with the Linux/amd64 architecture. This will help our application run smoothly on macOS systems using Docker. For more information about Dockerfiles, we can visit what is the Dockerfile and how do you create one?.
How to Pull Linux/amd64 Images on macOS
To pull Linux/amd64 Docker images on macOS, we need to make sure our
Docker is ready for multi-platform images. Docker Desktop for Mac can do
this by using the --platform flag when we pull images.
Open your terminal.
Use this command to pull a Linux/amd64 image:
docker pull --platform linux/amd64 <image-name>We should replace
<image-name>with the image we want. For example, to pullnginx, we write:docker pull --platform linux/amd64 nginxIf we want to check the architecture of the image we pulled, we run:
docker inspect <image-name>We look for the
Architecturefield in the output to see if it isamd64.To set a default platform for all pulls, we can change Docker Desktop settings:
- Open Docker Desktop.
- Go to Settings > Experimental Features.
- Check the box for Use Rosetta for x86/amd64 emulation on Apple Silicon.
To pull many images at the same time, we can use a script:
for image in nginx redis mysql; do docker pull --platform linux/amd64 $image done
We should have the latest version of Docker Desktop for macOS. This helps with performance and works better with multi-platform images. We can learn more about Docker images and how they work here.
How to Verify Docker is Using Linux/amd64 Platform
We can check if Docker is using the Linux/amd64 platform on macOS by running a command in the terminal.
First, open your terminal and type this command:
docker versionThis command shows the versions of the Docker client and server. It also gives information about the architecture. Look for the “Architecture” field in the result:
Client:
Version: 20.10.7
API version: 1.41
Go version: go1.16.3
Git commit: 20.10.7-0ubuntu1~20.04.1
Built: Fri Aug 6 10:05:29 2021
OS/Arch: darwin/amd64
Context: default
Experimental: false
Server:
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
Go version: go1.16.3
Git commit: 20.10.7-0ubuntu1~20.04.1
Built: Fri Aug 6 10:05:29 2021
OS/Arch: linux/amd64
Experimental: false
Make sure both the Client and Server sections say
OS/Arch: linux/amd64.
You can also use another command to check the current platform Docker is using. Run this command:
docker info | grep "Architecture"This should show:
Architecture: x86_64
If you see x86_64, it means Docker is using the
Linux/amd64 architecture.
Another way is to use the docker run command with the
--platform flag. This lets us check the architecture
directly:
docker run --rm --platform linux/amd64 alpine uname -mThe result should be:
x86_64
This shows that the Docker container runs on the Linux/amd64 platform. We should verify our setup to make sure it works with our needed architectures. For more details about Docker architectures, we can check this article on Docker architecture.
Frequently Asked Questions
1. How do I set Docker to use the Linux/amd64 platform on macOS?
To make Docker use the Linux/amd64 platform by default on macOS, we can change some settings in Docker Desktop. First, we go to Docker Desktop. Then we click on Preferences. After that, we find Experimental Features and turn on “Use Rosetta for x86/amd64 emulation on Apple Silicon.” This setting helps us run Linux/amd64 images easily.
2. Can I use Docker Buildx to target the Linux/amd64 platform?
Yes, we can use Docker Buildx to choose the platform when we build images. We can run this command to build our Docker image for Linux/amd64:
docker buildx build --platform linux/amd64 -t your-image-name .This command makes sure that our image works with the Linux/amd64 architecture.
3. How do I check if Docker is using the Linux/amd64 platform on my macOS?
To check if Docker is using the Linux/amd64 platform, we run this command:
docker versionWe look at the “Architecture” field in the output. If it says “amd64,” then Docker is using the Linux/amd64 platform correctly.
4. Are there specific Dockerfile configurations for Linux/amd64 compatibility?
When we create a Dockerfile for Linux/amd64 compatibility, we need to use base images that support the amd64 architecture. For example, we should use:
FROM amd64/ubuntu:latestThis line makes sure that our Dockerfile works with the Linux/amd64 platform.
5. How can I pull Linux/amd64 Docker images on macOS?
To pull Linux/amd64 Docker images on macOS, we can use this command:
docker pull --platform linux/amd64 your-image-nameThis command asks for the Linux/amd64 version of the image, so we get the right architecture for our system.
For more information about Docker and its features, we can read what is Docker and why should you use it and how does Docker differ from virtual machines.