반응형
M1(Mac Silicon)에서 Docker 이미지 실행 시 no matching manifest 에러 해결하기
Apple Silicon(M1, M2 등 ARM 기반) 환경에서 mysql:5.7.32 이미지를 Docker로 실행하려고 할 때 다음과 같은 에러 메시지를 자주 만나게 됩니다.
no matching manifest for linux/arm64/v8 in the manifest list entries
이는 해당 Docker 이미지가 ARM 아키텍처를 공식적으로 지원하지 않기 때문입니다. 기본적으로 M1/M2에서는 linux/arm64 플랫폼을 사용하지만, mysql:5.7.32는 linux/x86_64만 지원합니다.
문제 상황
docker-compose.yml 파일
vim docker-compose.yml
version: '3.9'
services:
###MySQL Service
db:
image: mysql:5.7.32
container_name: db
restart: unless-stopped
environment:
MYSQL_DATABASE: laravel_db
MYSQL_USER: laravel
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: P@ssword
SERVICE_NAME: php
SERVICE_TAGS: dev
volumes:
- ./mysql/data:/var/lib/mysql:rw
expose:
- 3306
ports:
- 3306:3306
networks:
- app-network
docker-compose --build
[+] Running 0/1
⠇ db Pulling 3.7s
no matching manifest for linux/arm64/v8 in the manifest list entries
M1(silicon) 버전에 MySQL 컨테이너 실행 시 위와 같이 에러가 발생합니다.
728x90
해결 방법: 플랫폼 지정(platform: linux/x86_64)
Docker는 명시적으로 실행할 플랫폼을 지정할 수 있는 기능을 제공합니다.
docker-compose.yml에 다음과 같이 platform 항목을 추가해줍니다.
vim docker-compose.yml
version: '3.9'
services:
###MySQL Service
db:
platform: linux/x86_64
image: mysql:5.7.32
container_name: db
restart: unless-stopped
environment:
MYSQL_DATABASE: laravel_db
MYSQL_USER: laravel
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: P@ssword
SERVICE_NAME: php
SERVICE_TAGS: dev
volumes:
- ./mysql/data:/var/lib/mysql:rw
expose:
- 3306
ports:
- 3306:3306
networks:
- app-network
이렇게 설정하면 Docker가 x86_64 아키텍처용 이미지를 다운로드하고 실행할 수 있도록 에뮬레이션(QEMU)을 활용하게 됩니다.
실행 결과
다시 빌드 명령어 실행
docker-compose --build
[+] Running 12/12
⠿ db Pulled
⠿ a076a628af6f Pull complete
⠿ f6c208f3f991 Pull complete
⠿ 88a9455a9165 Pull complete
⠿ fadfb9734ed2 Pull complete
[+] Building 11.4s (20/21)
참고 사항
- platform: linux/x86_64 옵션은 ARM 기반 Docker 환경에서 x86 아키텍처 이미지가 필요할 때 꼭 필요한 설정입니다.
- 다만 에뮬레이션으로 동작하기 때문에 성능이 다소 떨어질 수 있으며, 가능하다면 ARM을 지원하는 이미지로 대체하는 것이 권장됩니다.
- 공식적으로 ARM64를 지원하는 MySQL 이미지가 필요한 경우, mysql:8 이상 또는 mariadb 같은 대체 이미지를 고려해볼 수 있습니다.
반응형
'맥(솔라리스)' 카테고리의 다른 글
[솔라리스] snoop 명령어 (0) | 2013.09.07 |
---|---|
[솔라리스] solaris 정보확인 명령어 (0) | 2013.09.06 |
Solaris 서버 정보 확인 명령어 (0) | 2013.06.25 |
[솔라리스] 솔라리스 10 에서 svc 제어하기(svccfg) (0) | 2013.06.17 |
[솔라리스] 오픈솔라리스 네트워크 설정 (0) | 2013.06.17 |