일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정보처리기사실기 기출문제
- 티스토리챌린지
- IntelliJ
- kotlin spring
- AI
- 코틀린 코루틴의 정석
- 정보처리기사 실기
- 기록으로 실력을 쌓자
- MySQL
- kotlin querydsl
- CloudWatch
- Linux
- APM
- AWS EKS
- mysql 튜닝
- 오블완
- minikube
- Kubernetes
- Pinpoint
- aws
- Elasticsearch
- 공부
- CKA
- PETERICA
- Java
- kotlin coroutine
- Spring
- 정보처리기사 실기 기출문제
- CKA 기출문제
- kotlin
- Today
- Total
피터의 개발이야기
[Docker] Colima를 이용한 아키텍처 호완성 문제 해결, 멀티 아키텍처 이미지 빌드, docker buildx build --platform 본문
[Docker] Colima를 이용한 아키텍처 호완성 문제 해결, 멀티 아키텍처 이미지 빌드, docker buildx build --platform
기록하는 백앤드개발자 2024. 8. 1. 16:02ㅁ 들어가며
MacBook M3에서 로컬에서 빌드한 Docker 이미지가 개발 환경에서 문제가 발생하는 경우가 있다. 그 이유는 주로 아키텍처 호환성 문제 때문일 수 있다.
MacBook M3는 ARM 아키텍처를 사용하지만, 많은 서버 환경은 여전히 x86 아키텍처를 사용한다. 이로 인해, ARM에서 빌드한 이미지를 x86 환경에서 실행하려고 하면 문제가 발생할 수 있다.
ㅁ 해결방법
ㅇ 이 문제를 해결하기 위해 Colima를 사용하여 Docker 이미지를 빌드하는 것이 도움이 될 수 있다.
ㅇ Colima는 MacOS에서 Docker를 실행하기 위한 경량의 대안으로, 기본적으로 QEMU를 사용하여 다양한 아키텍처를 지원한다.
ㅇ 다음은 Colima를 사용하여 멀티 아키텍처 Docker 이미지를 빌드하는 방법이다.
ㅁ Colima 설치 및 시작
brew install colima
colima start --arch x86_64
ㅇ Colima를 실행할 때에 x86 아키텍처를 사용한다.
ㅁ Docker Buildx 사용
docker buildx create --use
ㅇ Docker Buildx는 멀티 플랫폼 이미지를 빌드할 수 있도록 도와준다.
ㅇ 위 명령어를 사용하여 Buildx를 활성화한다.
ㅁ 멀티 아키텍처 이미지 빌드
docker buildx build --platform linux/amd64,linux/arm64 -t your_image_name:tag .
ㅇ Dockerfile이 있는 디렉토리에서 다음 명령어를 실행하여 멀티 아키텍처 이미지를 빌드한다.
ㅇ 이렇게 하면 ARM과 x86 아키텍처에서 모두 실행 가능한 Docker 이미지를 빌드할 수 있다.
ㅁ 또 다른 방법: amd로 빌드하도록 지정하는 옵션
DOCKER_BUILD_OPTS=
if [[ $(arch) == 'arm64' ]]; then
DOCKER_BUILD_OPTS="--platform=linux/amd64"
fi
${DOCKERCLI} build $DOCKER_BUILD_OPTS -t ${IMAGE_NAME} . -f ./docker/Dockerfile
ㅇ docker 이미지 빌드 옵션(DOCKER_BUILD_OPTS)에 amd"로 지정할 수 있다.
를 추가해서 이미지 빌드를 하고 aws에 배포를 실행하니 에러 없이 해결할 수 있었다!
ㅁ 함께 보면 좋은 사이트
ㅇ 알아두면 유용한 도커 빌드 팁 - 멀티 스테이지 빌드
ㅇ Docker buildx로 멀티 플랫폼 이미지 빌드하기
'DevOps > Docker' 카테고리의 다른 글
[Docker] Express 서버를 Docker에서 PM2로 기동하는 방법 (1) | 2024.10.17 |
---|---|
[Docker] 맥북M1에 Oracle Database 설치 (3) | 2024.10.04 |
[Docker] Docker를 터미널에서 실행하는 방법 (0) | 2024.05.18 |
[Docker] 네트워크, 컨테이너간 통신 (0) | 2024.05.07 |
[Docker] Network 명령어 정리 (0) | 2024.05.06 |