source

M1 도커 미리 보기 및 키클로크 'image' 플랫폼(linux/amd64)이 탐지된 호스트 플랫폼(linux/arm64/v8)과 일치하지 않음' 문제

ittop 2023. 8. 5. 11:02
반응형

M1 도커 미리 보기 및 키클로크 'image' 플랫폼(linux/amd64)이 탐지된 호스트 플랫폼(linux/arm64/v8)과 일치하지 않음' 문제

저는 방금 도커 프리뷰 v3.1 https://docs.docker.com/docker-for-mac/apple-m1/ 을 다운받아 키클로크를 실행해 보았습니다.

이 문제에 부딪힌 사람이 또 있습니까?

docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:12.0.4
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

도커 이미지를 빌드하는 동안 이를 추가할 수 있습니다.

--platform linux/amd64

부터

https://github.com/google/cadvisor/issues/2763

https://github.com/Y2Data

캡처한 파일을 에 추가합니다.~/.zshrc그리고.~/.bashrc이것은 당신이 수행할 때마다 플래그를 반복하지 않도록 합니다.docker run명령:

# useful only for Mac OS Silicon M1, 
# still working but useless for the other platforms
docker() {
 if [[ `uname -m` == "arm64" ]] && [[ "$1" == "run" || "$1" == "build" ]]; then
    /usr/local/bin/docker "$1" --platform linux/amd64 "${@:2}"
  else
     /usr/local/bin/docker "$@"
  fi
}

@li Ezyio가 답변한 것과 유사한 답변으로, 오류는 이미지를 로컬로 빌드하기 위해 사용하는 플랫폼이 이미지에 사용되는 플랫폼과 다른 플랫폼임을 알려줍니다.이는 M1 컴퓨터(및 아마도 다른 컴퓨터)에서 발생합니다. 따라서 다음을 지정해야 합니다.--platform <PLATFORM_SPEC>에게docker build명령, 그리고 대체합니다.<PLATFORM_SPEC>오류가 알려주는 것에 대해 (이 경우)linux/arm64/v8).

또한 이러한 환경 변수를 설정하는 것이 효과적이었습니다.

export DOCKER_BUILDKIT=0                                                                                                                                                    
export COMPOSE_DOCKER_CLI_BUILD=0
export DOCKER_DEFAULT_PLATFORM=linux/amd64

만약 당신이 깃발을 넘기고 싶지 않다면.--platformbuild 명령을 실행할 때마다.

M1 Mac에서 Docker Workstation을 실행하는 경우 buildx 명령이 포함된 Docker Workstation 다중 CPU 아키텍처 지원을 활용할 수 있습니다.다른 CPU에 대한 이미지를 생성할 수 있습니다.

M1 Mac 워크스테이션에 Linux/AMD/Intel 이미지를 구축하려면 다음을 실행합니다.

docker buildx build --platform=linux/amd64 -t myorg/mytag:1.0.0 .

배치docker buildx앞에서 BuildKit로 명령을 시작합니다.자세한 내용은 위의 링크를 참조하십시오.

방금 이 게시물을 찾았습니다: https://github.com/docker/for-mac/issues/5310#issuecomment-779791882

이 이미지를 사용하여 키클로크를 시작할 수 있습니다.https://hub.docker.com/r/wizzn/keycloak

다음은 M1 컴퓨터에서 이미지를 빌드할 때 유용합니다.

docker build -t <image-name> --platform linux/x86_64

새 버전으로 업그레이드할 때도 이 문제가 발생했습니다.

모든 이미지를 삭제하여 수정합니다. 이전 버전의 "docker system prun --all"로 빌드하고 이미지를 다시 빌드합니다.

루트 원인은 다음 스레드와 동일합니다.

도커가 macOS에서 기본적으로 Linux/amd64 플랫폼을 사용하도록 강제 설정

Mac M1의 도커는 "요청된 이미지의 플랫폼(linux/amd64)이 탐지된 호스트 플랫폼과 일치하지 않습니다."라고 표시합니다.

docker-compose.yml 접근법에도 'fix'가 있습니다.

M1을 사용하는 Mac에서는 Docker Desktop에서 Rosetta를 활성화해야 합니다(Settings > Features in Development).Rosetta는 x86 명령어를 ARM 명령어로 변환할 수 있는 Mac 실리콘용 동적 이진 변환기입니다.

enter image description here

그런 다음 다음 환경 변수를 설정하여 기본 도커 빌드 구성을 지정할 수 있습니다(참고 - 모든 도커 컨테이너에서 이 구성을 기본 플랫폼으로 사용하려면 이 작업만 수행하십시오).

export DOCKER_DEFAULT_PLATFORM=linux/amd64

다음에 도커 빌드를 실행하면 도커 빌드가 이미지의 기본 플랫폼으로 사용되며 Rosetta가 활성화되면 이제 작동합니다.

참조 - https://collabnix.com/warning-the-requested-images-platform-linux-amd64-does-not-match-the-detected-host-platform-linux-arm64-v8/

도커 데스크톱에서 "Apple Silicon에서 Rosetta for x86/amd64 에뮬레이션 사용" 구성을 설정하는 것이 이 문제를 해결하는 데 도움이 되었습니다 - 도커 설정

M1 칩용 콩코스 yaml:

https://raw.githubusercontent.com/robinhuiser/concourse-arm64/main/docker-compose.yaml

https://github.com/robinhuiser/concourse-arm64/blob/main/docker-compose.yaml

여기서 설치해 보십시오.

명령:wget https://raw.githubusercontent.com/robinhuiser/concourse-arm64/main/docker-compose.yaml 도커-docker up -d

저는 M1 칩 맥북에서 도커 이미지를 빌드하고 리눅스 머신에서 이미지를 실행하려고 했기 때문에 오류가 발생했습니다.

이것은 저에게 효과가 있었습니다.

실행에 필요한 동일한 기계를 사용하여 도커 이미지를 구축하면 작동했습니다.

도커 파일에서 사용했기 때문에 이 문제가 발생했습니다.FROM java:8암64를 지원하지 않습니다.

다음 명령을 실행하여 수정합니다.

docker pull openjdk

그리고 나서 내 도커 파일을 로 변경했습니다.

FROM openjdk:latest

이것은 Mac에서도 문제를 해결합니다.

도커 pull openjdk 그런 다음 내 도커 파일을 로 변경했습니다.

FROM openjdk:최신

언급URL : https://stackoverflow.com/questions/66662820/m1-docker-preview-and-keycloak-images-platform-linux-amd64-does-not-match-th

반응형