본문 바로가기
개발 이야기/Springboot

TestContainers에서 Can't get Docker image: RemoteDockerImage에러 발생 시

by 농개 2025. 2. 2.
반응형

얼마전 맥북을 한번 밀고

새롭게 업무 환경 세팅을 하던 중 docker 관련 에러가 하나 발생했다.

Springboot + TestContainers를 활용한 빌드 과정이었다.

Could not find a valid Docker environment. Please see logs and check configuration
java.lang.IllegalStateException: Could not find a valid Docker environment. Please see logs and check configuration
at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$7(DockerClientProviderStrategy.java:256)
at java.base/java.util.Optional.orElseThrow(Optional.java:403)
at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:247)
at org.testcontainers.DockerClientFactory.getOrInitializeStrategy(DockerClientFactory.java:150)
at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:186)
at org.testcontainers.DockerClientFactory$1.getDockerClient(DockerClientFactory.java:104)

 

Could not find a valid Docker environment. Please see logs and check configuration 라는 에러가 떴다.

구글링해보니...

 

출처: https://github.com/testcontainers/testcontainers-java/discussions/6045

 

이는 MacOS 환경에서 발생할수 있는 에러이며

아래와 같이 심볼릭 링크를 추가해주면 해결된다.

 sudo ln -s $HOME/.docker/run/docker.sock /var/run/docker.sock

 

그러고 나서 다시 빌드 실행.

이번에는 다른 에러가 떴다.

Testcontainer에서 이미지 pull 관련 에러가 발생했다.

Caused by: org.testcontainers.containers.ContainerFetchException: Can't get Docker image: RemoteDockerImage(imageName=mysql:8.0.24, imagePullPolicy=DefaultPullPolicy(), imageNameSubstitutor=org.testcontainers.utility.ImageNameSubstitutor$LogWrappedImageNameSubstitutor@4dc7cd1c)
at app//org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1371)
at app//org.testcontainers.containers.GenericContainer.logger(GenericContainer.java:651)
at app//org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)
... 75 more
Caused by: com.github.dockerjava.api.exception.NotFoundException: Status 404: {"message":"no matching manifest for linux/arm64/v8 in the manifest list entries: no match for platform in manifest: not found"}

 

Can't get Docker image: RemoteDockerImage... 원격 허브에서 이미지를 다운로드 받는데 실패 했다는 것이다.

그리고 조금 더 아래에

NotFoundException: Status 404: {"message":"no matching manifest for linux/arm64/v8... 가 보였다.

MacOS Apple Silicon 과 관련된 것인듯 하다.

(맥북 초보라 이런 에러를 최근 많이 접함... 😂)

 

아니나 다를까 사용하려는 이미지는 linux/arm64/v8 에 해당하는 도커 이미지를 지원하지 않았다.

출처: https://hub.docker.com/_/mysql/tags?name=8.0.24

 

아래와 같이 수동으로 이미지를 pull 해줬다.

 docker pull --platform=linux/amd64 mysql:8.0.24

 

이 후, 다시 앱을 빌드하니 정상적으로 동작하였다.

(아마도 환경 세팅 구간에서 platform 값이 linux/arm64/v8로 캐싱되어 Testcontainers 실행 구간에서도 영향을 받은듯 하다.)

 

반응형