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
캡처한 파일을 에 추가합니다.~/.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
만약 당신이 깃발을 넘기고 싶지 않다면.--platform
build 명령을 실행할 때마다.
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 실리콘용 동적 이진 변환기입니다.
그런 다음 다음 환경 변수를 설정하여 기본 도커 빌드 구성을 지정할 수 있습니다(참고 - 모든 도커 컨테이너에서 이 구성을 기본 플랫폼으로 사용하려면 이 작업만 수행하십시오).
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
'source' 카테고리의 다른 글
실행 정책을 성공적으로 변경하고 PowerShell 스크립트를 실행하도록 설정하는 방법 (0) | 2023.08.05 |
---|---|
Android에 사용되는 SQLite 버전은 무엇입니까? (0) | 2023.08.05 |
안드로이드 구글 지도 java.lang.NoClassDefFoundError: 확인 실패: Log/apache/http/ProtocolVersion (0) | 2023.08.05 |
진자 템플릿의 사전 목록을 통해 반복하는 방법은 무엇입니까? (0) | 2023.08.05 |
스프링 부트에서 rest 컨트롤러가 작동하지 않음 (0) | 2023.08.05 |