m1 맥북에서 도커 MySQL official 이미지를 실행할 수 없는 문제
에러 메시지) docker: no matching manifest for linux/arm64/v8 in the manifest list entries
해결 요약: 도커 명령어에 다음의 옵션 추가
--platform linux/amd64
에러 메시지 :
arm64 아키텍처(m1 apple silicon의 아키텍처)를 지원하는 이미지가 목록에 없음.
1.
도커 허브의 MySQL 공식 이미지 안내에는 ARM 64 태그가 달려있다.
그럼에도 불구하고 정상적으로 이미지를 당겨 올 수 없어서 의문이다.
official Image 마크가 무색하게도.
도커 명령어 옵션으로 ' --platform linux/amd64 '를 덧붙여
이미지를 당겨오는 플랫폼이
arm64 환경이 아닌 amd64의 linux 환경이라고 명시함으로써
에러를 피해 가는 방법이다.
테스트 결과 다른 아키텍처의 이미지를 가져왔음에도 잘 작동한다. 이상하지만;
Activity Monitor 상에서 docker 이름을 가진 apple 네이티브가 아닌 프로세스는 찾을 수 없었다.
도커 엔진 내부에서 m1 칩셋이 번역기를 돌리는 구조는 아닐 것 같은데 잘 모르겠다.
왜 될까?
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를 통해 동작.
'기술 기록 > Docker' 카테고리의 다른 글
(Eng) error) Docker) Solving the Psycopg2 Installation Issue in Docker Containers (0) | 2023.02.11 |
---|---|
error, 도커) Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist 해결방법 (0) | 2022.05.04 |
도커_03) 컨테이너와 로컬 사이의 볼륨(폴더, 디렉터리) 공유 (0) | 2022.03.28 |
도커_02) 도커파일을 이용한 이미지 작성 - nodeJS 서버 컨테이너 (0) | 2022.03.20 |
도커_01) 도커 기본 명령어 (0) | 2022.03.11 |
댓글