WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8)
linux/amd64 이미지를 linux/arm64/v8(라즈베리파이)에서 실행하려다 실패했을 가능성 높음.
아키텍처 불일치: 로컬에서 빌드한 amd64 이미지가 ARM에서 실행되지 않음 → exec format error 발생 가능.
해결 방법
ARM 아키텍처(linux/arm64)용 이미지를 만들어야 합니다. 두 가지 방법으로 진행할 수 있어요:
1. 로컬에서 ARM 이미지 빌드 (추천)
docker buildx를 사용해 로컬에서 ARM용 이미지를 빌드하고 라즈베리파이에 전송:
- Buildx 확인 및 설정:
- 로컬에서 buildx 사용 가능 여부 확인:
docker buildx version
- 없으면 설치 (Windows라면 WSL2 필요):
docker buildx create --use
- 없으면 설치 (Windows라면 WSL2 필요):
- 로컬에서 buildx 사용 가능 여부 확인:
- ARM 이미지 빌드:
cd C:\Users\Ujin Kim\Downloads\rating-engine docker buildx build --platform linux/arm64 -t rating-engine:arm-v1 .cd C:\Users\Ujin Kim\Downloads\radar-live-mockup docker buildx build --platform linux/arm64 -t radar-live-mockup:arm-v1 .
- 이미지 저장:
docker save -o rating-engine-arm-v1.tar rating-engine:arm-v1docker save -o radar-live-mockup-arm-v1.tar radar-live-mockup:arm-v1
- 라즈베리파이에 전송:
scp rating-engine-arm-v1.tar coder1@thekitchen.work:/home/coder1/scp radar-live-mockup-arm-v1.tar coder1@thekitchen.work:/home/coder1/
- 기존 컨테이너 제거:
docker rm rating-engine-containerdocker rm radar-live-mockup-container
- 로드 및 실행:
docker load -i /home/coder1/rating-engine-arm-v1.tardocker load -i /home/coder1/radar-live-mockup-arm-v1.tardocker run -d -p 4000:4000 --name rating-engine-container rating-engine:arm-v1docker run -d -p 4001:4001 --name radar-live-mockup-container radar-live-mockup:arm-v1
(원래는 아래와 같이 실행해 에러남)
빌드 명령어
bash
CollapseWrapCopy
cd C:\Users\Ujin Kim\Downloads\rating-engine docker build -t rating-engine:v1 .
빌드 명령어
bash
CollapseWrapCopy
cd C:\Users\Ujin Kim\Downloads\radar-live-mockup docker build -t radar-live-mockup:v1 .
1. 로컬에서 이미지 준비
이미 빌드한 이미지를 확인합니다:
docker images
- rating-engine:v1와 radar-live-mockup:v1이 보이는지 확인.
이미지를 .tar 파일로 저장:
docker save -o rating-engine-v1.tar rating-engine:v1
docker save -o radar-live-mockup-v1.tar radar-live-mockup:v1
- 결과: rating-engine-v1.tar와 radar-live-mockup-v1.tar 파일 생성.
2. 라즈베리파이에 전송
SSH를 통해 파일을 라즈베리파이로 전송:
scp rating-engine-v1.tar coder1@thekitchen.work:/home/coder1/
scp radar-live-mockup-v1.tar coder1@thekitchen.work:/home/coder1/
3. 라즈베리파이에서 이미지 로드
전송한 .tar 파일을 Docker로 로드:
docker load -i rating-engine-v1.tar
docker load -i radar-live-mockup-v1.tar
- 확인:
docker images
5. 컨테이너 실행
기존 실행 중인 프로세스 중지 (필요 시):
ps aux | grep node sudo kill -9 <PID>
Docker 컨테이너 실행:
docker run -d -p 4000:4000 --name rating-engine-container rating-engine:v1
docker run -d -p 4001:4001 --name radar-live-mockup-container radar-live-mockup:v1
6. 확인
docker ps
- 두 컨테이너가 실행 중인지 확인.
- 브라우저에서 thekitchen.work:4000과 thekitchen.work:4001로 접속 테스트.
Dockerfile과 Git의 차이:
- Git은 소스코드와 Dockerfile을 관리합니다. 하지만 Docker 이미지는 Git에 포함되지 않아요. 이미지는 빌드된 결과물로, Docker Hub나 수동 전송으로 배포해야 합니다.
- 라즈베리파이에서 git pull만 하면 소스코드와 Dockerfile은 업데이트되지만, Docker 이미지가 자동으로 빌드되거나 실행되지는 않습니다.
'프로그래밍' 카테고리의 다른 글
AWS EC2 Fundamentals (0) | 2025.03.31 |
---|---|
AWS IAM (0) | 2025.03.25 |
컨테이너가 외부 도메인 대신 내부 네트워크로 통신하도록 설정하면 DNS 문제를 피할 수 있어요. (0) | 2025.03.12 |
파이썬 제곱근 (0) | 2024.10.17 |
파이썬 sort() vs sorted() (0) | 2024.10.17 |