본문 바로가기

기타

[mac] mac m1 no matching manifest for linux/arm64/v8 in the manifest list entries

728x90

no matching manifest for linux/arm64/v8 in the manifest list entries

"no matching manifest for linux/arm64/v8 in the manifest list entries"라는 오류 메시지는 Linux ARM64/v8 아키텍처에 대한 매니페스트가 매니페스트 목록에 없음을 나타냅니다. 이 오류는 도커 이미지를 가져오거나 실행하려는 경우 해당 아키텍처를 지원하지 않는 경우에 발생할 수 있습니다.

 

이 문제를 해결하기 위해 다음 옵션을 고려할 수 있습니다.

 

1. 플랫폼 확인: 현재 사용하는 플랫폼이 Linux ARM64/v8 아키텍처인지 확인해야 합니다. uname -m 명령을 실행하여 아키텍처를 확인할 수 있습니다. ARM64/v8 아키텍처인 경우 이 오류가 발생할 수 있습니다.

$ uname -m
arm64

 

2. 대체 이미지 찾기: ARM64/v8 아키텍처를 지원하는 다른 도커 이미지를 찾아보십시오. 도커 허브나 다른 컨테이너 레지스트리에서 ARM64/v8 아키텍처를 지원하는 이미지를 검색할 수 있습니다. 이미지에는 보통 :arm64v8 또는 :aarch64와 같은 태그가 있을 수 있습니다.

 

3. 직접 이미지 빌드: 도커 이미지를 직접 ARM64/v8 아키텍처에서 빌드할 수도 있습니다. 이미지를 빌드할 수 있는 Dockerfile이나 소스 코드를 사용하여 이미지를 생성해 보세요. 이렇게 하면 특정 아키텍처를 지원하는 이미지를 만들 수 있습니다.

 

4. 크로스(Cross-build) 컴파일: ARM64/v8 아키텍처를 지원하지 않는 플랫폼에서 이미지를 크로스 컴파일하여 사용할 수도 있습니다. 크로스 컴파일은 다른 플랫폼에서 ARM64/v8 아키텍처를 대상으로 컴파일하는 과정입니다. 이 경우에는 크로스 컴파일을 위한 도구와 설정이 필요할 수 있습니다.

 

도커 이미지의 문서나 지원 채널을 확인하여 ARM64/v8 아키텍처에 대한 지원이 있는지 확인하는 것이 좋습니다. 이렇게 하면 해당 이미지를 효과적으로 사용할 수 있습니다.

 

dockerhub(mysql)

MySQL is a widely used, open-source relational database management system (RDBMS).

 

docker 명령어로 실행하는 방법

  • docker pull
docker pull mysql:5.7.42-debian
$ docker pull mysql:5.7.42-debian
5.7.42-debian: Pulling from library/mysql
no matching manifest for linux/arm64/v8 in the manifest list entries
  • docker pull (--platform linux/amd64 옵션 추가)
docker pull --platform linux/amd64 mysql:5.7.42-debian
$ docker pull --platform linux/amd64 mysql:5.7.42-debian
5.7.42-debian: Pulling from library/mysql
25ff99d19581: Pull complete
da9763f512b1: Pull complete
d11d89fac8aa: Pull complete
2d681f978f70: Pull complete
d2adf752d434: Pull complete
dd330e0c6f85: Pull complete
67ea33965a1e: Pull complete
0a782f1cd863: Pull complete
29388ae78fd3: Pull complete
5122440438b8: Pull complete
41ecea750b12: Pull complete
Digest: sha256:bdba76687adae7a631d1ed27b9571ffe186ec93d57ad17037c9b75402e61a7e1
Status: Downloaded newer image for mysql:5.7.42-debian
docker.io/library/mysql:5.7.42-debian
728x90
  • docker run
docker run -it --rm --name mysql mysql:5.7.42-debian sh
$ docker run -it --rm --name mysql mysql:5.7.42-debian bash
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
root@9c1797866135:/#

root@9c1797866135:/# uname -m
x86_64
The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

docker-compose 명령어로 실행하는 방법

  • docker-compose.yaml 파일 생성
version: '3.9'
services:

  mydb1:
    image: mysql:5.7.42-debian
    container_name: mydb1
    restart: always
    platform: linux/amd64
    environment:
      MYSQL_ROOT_PASSWORD: root
      TZ: Asia/Seoul
    volumes:
      - ./mydb1/data:/var/lib/mysql
      - ./mydb1/init:/docker-entrypoint-initdb.d
    ports:
      - 3306:3306
  • docker-compose 실행
docker-compose up -d
$ docker-compose up -d
[+] Running 1/1
 ✔ Container mydb1  Started
  • docker-compose 컨테이너 목록 확인
docker ps -a
$ docker ps -a
CONTAINER ID   IMAGE                 COMMAND                   CREATED         STATUS         PORTS                               NAMES
958748529caf   mysql:5.7.42-debian   "docker-entrypoint.s…"   4 seconds ago   Up 3 seconds   0.0.0.0:3306->3306/tcp, 33060/tcp   mydb1
  • docker-compose 명령어를 사용하여 도커 컨테이너에 접속하기
docker-compose exec mydb1 bash
$ docker-compose exec mydb1 bash
root@958748529caf:/# uname -m
x86_64

 

728x90