AWS EC2 에서 RDS 가 아닌
Docker Hub 를 통해 Mysql 이미지를 관리하고자
Docker Hub 에서 mysql:latest 를 받아 데이터베이스만 새로 만든 상태로 hub 에 push 후
EC2 로 pull 하고 run 을 해보았는데
WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64/v3) and no specific platform was requested
같은 에러가 떴다.
문제는 최초로 mysql 을 받았던 환경이 M1 (Arm64) 맥이기 때문으로
ec2 의 플랫폼 (Amd64) 과 호환되지 않아 발생하는 문제이다.
해결 방법으로
mysql 이미지를 새로 build 를 해보려한다.
터미널을 열고 명령어를 칠 경로에 Dockerfile 을 만들어준다.
# Dockerfile
FROM mysql:8.2
ENV MYSQL_ROOT_PASSWORD=1234
docker buildx build --platform linux/amd64,linux/arm64 --tag mysql-reuse:rebuild .
으로 빌드를 해주려니
ERROR: Multi-platform build is not supported for the docker driver.
Switch to a different driver, or turn on the containerd image store, and try again.
Learn more at https://docs.docker.com/go/build-multi-platform/
같은 에러가 발생하였다.
플랫폼을 하나만 설정해서 빌드하는건 문제 없이 됐는데
linux/amd64,linux/arm64 두 가지 이상 플랫폼을 적으면 뜨는 에러인듯 하다.
Docs 를 들어가보면 custom 으로 builder 를 따로 만들어서 하는 방법을 설명해주고 있는데
구글링을 따로 해본 결과
터미널에
docker buildx inspect --bootstrap
를 치면 Docker hub 이미지에
같이 moby/buildkit 이미지가 생성되면서 container 로 실행된다.
이 상태로
docker buildx build --platform linux/amd64,linux/arm64 --push --tag gukjang/mysql-reuse:rebuild .
명령어를 쳐주면 docker hub 에 자동으로 push 가 되고
웹에 가보면 지원되는 플랫폼이 늘어나있는 것을 확인할 수 있다.
Troubleshoot) buildx 시 발생한 에러
ERROR: failed to solve: failed to push mysql-reuse:rebuild: push access denied, repository does not exist or may require authorization: server message: insufficient_scope: authorization failed
buildx 명령어를 칠 때 이미지명에 그냥 {이미지명}:{태그} 형식으로 입력했더니 위 같은 에러 발생.
본인 docker hub 계정 이름이 들어가야 업로드까지 되는 것으로 확인된다.
다시 ec2 로 돌아와서 rebuild 태그가 붙은 이미지를 pull 해주고 run 하니 에러 없이 실행된다!
참고
'개발 ━━━━━ > Troubleshoot' 카테고리의 다른 글
[Raspberry Pi] Docker-Compose 설치시 Building wheel for crytography (PEP 517) ... error (0) | 2023.12.08 |
---|---|
[AWS EC2] EC2 서버 다운 / swap 파일 생성 (0) | 2023.11.27 |
[AWS EC2] nohup: failed to run command 'java': No such file or directory (0) | 2023.11.25 |
[AWS EC2] Permission Denied - UNPROTECTED PRIVATE KEY FILE (0) | 2023.11.23 |
[SpringBoot] contextLoads() Failed (0) | 2023.09.27 |