본문 바로가기
coding/Docker

[Docker]맥북 M1 빌드 오류(linux/arm64, linux/amd64)

by 꾸준한 개발 2022. 3. 13.
반응형

1. 맥북 M1 build

에러코드

 WARNING: The requested image's platform (linux/arm64/v8) 
 does not match the detected host platform (linux/amd64) 
 and no specific platform was requested standard_init_linux.go:228: 
 exec user process caused: exec format error

문제점

M1 Mac book에서 Dockerfile를 Image로 빌드하고 aws ec2 ubuntu 서버에서 docker pull하면서 오류가 발생했다. 이유는 m1칩에서는 빌드할때 linux/arm64로 빌드가 되어서 ubuntu에서는 run이 되지 않는 것이였습니다.

  • 즉 M1은 architecture이 arm 기반이라서 ubuntu에서 열리지 않는것 입니다.
  • M1에서 빌드할때 amd 기반을 빌드할 수 있도록 docker buildx를 사용합니다.

2. docker buildx 세팅

처음부터 docker buildx를 사용할 수 없기때문에 따로 설정을 해줘야 합니다.

  • vim editor으로 설정하기
$ vim ~/.docker/config.json

  • visual studio에서 설정하기
$ code ~/.docker/config.json

"experimental": "enabled" 추가해주기

  • docker buildx가 잘 실행됩니다.

2. amd64로 빌드하기

  1. Builder Instance
    • docker buildx builder를 확인해 볼 수 있습니다. 기본적으로 처음에 default값이 존재하는 것을 확인 할수 있습니다.
  2. $ docker buildx ls
  3. Builder 생성 & 프로젝트 bulid 하기
    • --name은 builder 이름
    • --driver은 driver이름(띄어쓰기로 중복가능)
    • --pratform은 build할때 지정한 platform 고정할 수 있습니다.
    • --use는 현재 builder를 기본사용으로 지정합니다.
    • --load는 host docker image에 저장합니다.
    Builder 만들기buildx로 multi-platform image 만들기aws ubuntu서버에 가서 docker pull해주고 run해주니 잘돌아간다.
  4. $ docker buildx build --platform linux/adm64 --load -t test-example:version
  5. $ docker buildx --name [name] --driver [option] --use <-- 예시 $ docker buildx --name test --driver linux/amd64 linux/arm64 linux/ppc64le linux/arm/v8 linux/arm/v6
반응형

'coding > Docker' 카테고리의 다른 글

[Docker]도커 시작하기  (0) 2022.03.11

댓글