본문 바로가기
에러 해결

AWS(EC2) Docker 실행시 발생하는 exec format error

by sangyunpark99 2024. 8. 28.

😤 에러 상황

 

맥북에서 Docker image를 빌드 한후, Docker Hub에 Push 해준뒤, AWS EC2에서 배포를 위해 Docker Hub에서 Push 해준 이미지를 Pull 받은 후, image를 실행하기 위해 docker run 명령어를 사용하자 발생하는 에러입니다.

 

에러를 분석해보면, exec format error라고 나와 있다.

exec format error이 도대체 무엇일까요..?

 

❓ 문제 원인

문제의 원인은 맥북에서 도커 이미지 빌드시 플랫폼의 기본 옵션이 linux/arm64가 생성이 된다.

AWS EC2는 linux/arm64가 아닌, linux/amd64를 사용하므로 이미지를 실행하려고 할때 플랫폼 충돌이 발생한 것이다.

 

 

🔨 문제 원인을 뒷바침 해주는 증거

주장1. 맥북(M1)에서 Docker image를 빌드한 경우, Platform이 linux/arm64가 된다.

맥북(M1)에서 빌드를 해준 후, docker image inspect 명령어를 통해 platform이 어떤 것인지 확인해본 결과 amd64임을 확인할 수 있다.

 

주장2. AWS EC2는 linux/amd64를 사용한다.

 

aws 공식문서에는 다음과 같이 이야기한다.

AWS 공식문서 인용

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/instance-types.html

 

Amazon EC2 인스턴스 유형 - Amazon Elastic Compute Cloud

Amazon EC2 인스턴스 유형 인스턴스를 시작할 때 지정하는 인스턴스 유형에 따라 인스턴스에 사용되는 호스트 컴퓨터의 하드웨어가 결정됩니다. 각 인스턴스 유형은 서로 다른 컴퓨팅, 메모리, 스

docs.aws.amazon.com

 

😎  나의 해결 방법

맥북(M1)에서 빌드 할때, 플랫폼을 linux/amd64로 빌드해주면 된다.

(위 코드는 빌드와 푸쉬를 같이 해주고 있다.)