본문 바로가기
기술 기록/Docker

error) 도커, MySQL, m1 mac) docker: no matching manifest for linux/arm64/v8 in the manifest list entries

by Fola 2022. 3. 20.

 

 

 

m1 맥북에서 도커 MySQL official 이미지를 실행할 수 없는 문제

에러 메시지) docker: no matching manifest for linux/arm64/v8 in the manifest list entries

 

 

해결 요약: 도커 명령어에 다음의 옵션 추가

--platform linux/amd64

 

 

에러 메시지 :

arm64 아키텍처(m1 apple silicon의 아키텍처)를 지원하는 이미지가 목록에 없음. 

 

 

도커 허브 mysql official image 안내 페이지 캡쳐. arm64 태그에 화살표와 물음표가 그려져있다.

 

 

1.

도커 허브의 MySQL 공식 이미지 안내에는 ARM 64 태그가 달려있다.

그럼에도 불구하고 정상적으로 이미지를 당겨 올 수 없어서 의문이다. 

official Image 마크가 무색하게도.

 

도커 명령어 옵션으로 ' --platform linux/amd64 '를 덧붙여

이미지를 당겨오는 플랫폼이

arm64 환경이 아닌 amd64의 linux 환경이라고 명시함으로써

에러를 피해 가는 방법이다.

 

테스트 결과 다른 아키텍처의 이미지를 가져왔음에도 잘 작동한다. 이상하지만;

Activity Monitor 상에서 docker 이름을 가진 apple 네이티브가 아닌 프로세스는 찾을 수 없었다.

도커 엔진 내부에서 m1 칩셋이 번역기를 돌리는 구조는 아닐 것 같은데 잘 모르겠다. 

 

왜 될까?

 

CLI 환경에서 mysql client 가 잘 실행된 모습

 

 

 

2.

MySQL 도커 컨테이너 생성 명령어 예시

 

docker run \
--platform linux/amd64 \
-e MYSQL_ROOT_PASSWORD=p123456 \
-p 48921:3306 \
--name m1-mysql-1 \
-v /Users/folaflor/docker_volumes/mysql_data:/var/lib/mysql \
-d \
mysql

 

설명:

 

docker run \ -> 도커 컨테이너 생성 및 실행

--platform linux/amd64 \ -> linux/amd64 아키텍처용 이미지 이용
-e MYSQL_ROOT_PASSWORD=p123456 \  -> 초기 root 패스워드 설정
-p 48921:3306 \ -> 개방할 포트. 컨테이너 외부에서 48921  포트로 접근하면 컨테이너 내부의 3306 포트로 연결
--name m1-mysql-1 \ -> 컨테이너 이름
-v /Users/folaflor/docker_volumes/mysql_data:/var/lib/mysql \ -> DB 데이터를 저장할 볼륨 설정. (하단 설명 참조)
-d \ -> 백그라운드에서 실행
mysql -> 사용할 베이스 이미지. mysql:tag에서 :tag를 생략할 경우 최신 버전의 이미지를 가져옴

 

볼륨 옵션 설명

볼륨을 설정하지 않으면 컨테이너 삭제 시 DB 데이터도 모두 삭제된다. 

볼륨 설정 이후 컨테이너를 삭제하더라도 로컬 경로는 삭제되지 않는다

이후 mysql 새 컨테이너 생성 시 기존 로컬 경로를 설정하면 

생성된 컨테이너의 데이터 저장 폴더를 로컬 폴더로 덮어 씌우며 기존의 데이터를 다시 사용할 수 있다. 

 

 

 

 

 

 

추가 내용 

도커 데스크톱의 툴팁에 의하면 emulator를 통해 동작.

댓글