반응형
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로 빌드하기
- Builder Instance
- docker buildx builder를 확인해 볼 수 있습니다. 기본적으로 처음에 default값이 존재하는 것을 확인 할수 있습니다.
$ docker buildx ls
- Builder 생성 & 프로젝트 bulid 하기
- --name은 builder 이름
- --driver은 driver이름(띄어쓰기로 중복가능)
- --pratform은 build할때 지정한 platform 고정할 수 있습니다.
- --use는 현재 builder를 기본사용으로 지정합니다.
- --load는 host docker image에 저장합니다.
$ docker buildx build --platform linux/adm64 --load -t test-example:version
$ 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 |
---|
댓글