데이터 공부/Kubernetes

Mac M1에서 빌드한 이미지 - exec format error 해결 방법

한소희DE 2022. 6. 14. 23:22

 

 

 

배경 및 이슈

Logstash에 대한 도커 이미지를 빌드한 뒤, 쿠버네티스를 통해 deploy하려고 하였다.

이미지 빌드/푸시 시 에러가 뜨지 않았기 때문에 문제가 없을 것이라고 생각했는데,

pod 가 제대로 실행되지 않아 로그를 살펴보니 아래와 같은 에러가 발생했다.

 

standard_init_linux.go:228: exec user process caused: exec format error

 

 

 


원인

구글링 결과 이 원인은 매우 간단했다.

바로 m1 의 docker build image 기본 설정이 arm64이기 때문에, 포맷이 맞지 않아 발생한 것.

 

 

실제로 내가 빌드했던 이미지의 아키텍처 설정이 arm64인지 확인하기 위해서는 docker inspect 로 알 수 있다.

 

docker inspect <docker_image>

 

 

그 결과는 아래와 같다. 

 

        "Architecture": "arm64",
        "Os": "linux",

 

 


해결 방법

따라서 이 문제는 docker image를 빌드할 시, --platform=linux/amd64 옵션을 주어 간단히 해결할 수 있다.


docker build --platform=linux/amd64 <기타 옵션>

 

 

이렇게 이미지를 re-build/push 후, 다시 deployment 를 apply 하면 제대로 실행된다.