M1 맥에서 x86_64 도커 이미지 빌드 설정하기

Choi Yeongjun·2021년 3월 27일
2
post-custom-banner

실리콘 맥에서 Docker를 빌드할때 기본적으로 arm64 아키텍쳐 이미지로 도커가 빌드됩니다.

하지만 아직까지 arm64 아키텍쳐가 과도기인 환경에서는 필수불가결하게 amd64(x86_64) 이미지가 필요할때가 있습니다. 이러한 문제를 해결하기 위해 임시적으로 x86으로 빌드하는 방법들을 공유하려고 합니다.

해당 글은 Docker Desktop for m1 - 3.3.0(62345) 에 작성된 글입니다.

Dockerfile 생성

테스트를 위한 Dockerfile을 미리 생성해놓습니다.

cat <<EOF > Dockerfile
FROM ubuntu:18.04
RUN cat /etc/os-release
EOF

amd64(x86_64) 이미지 빌드하기

docker

임시로 docker 빌드 시에 platform을 명시해주는 방법입니다.

docker build -t my-ubuntu:x86_64 --platform linux/amd64 .
docker run -it --rm my-ubuntu:x86_64 uname -m

> x86_64

빌드된 도커 컨테이너에서 나온 uname -m의 결과가 x86_64 인 것을 확인할 수 있습니다.

docker-compose

docker-compose 으로 실행할때도 동일하게 platform을 명시할 수 있습니다.

cat <<EOF >  docker-compose.amd64.yml
services:
  web:
    build: .
    command: uname -m
    platform: linux/amd64

생성된 docker-compose.amd64.yml 파일으로 docker-compose 를 실행합니다.

docker-compose -f docker-compose.amd64.yml up --build

Building web
[+] Building 2.4s (6/6) FINISHED
 => [internal] load build definition from Dockerfile
 
 ... 중략  
 
Successfully built a3f0fe160a309826127ddea2e7fdc5f8f50edea867a88f76b25991b1c30ea6d7
Starting velog_web_1 ... done
Attaching to velog_web_1
web_1  | x86_64

컨테이너에서 실행된uname -m 의 결과가 x86_64 인것을 확인할 수 있습니다.

profile
Be Right Developer
post-custom-banner

0개의 댓글