java.lang.illegalstateException:找不到有效的Docker环境。请参阅日志并在M1 Mac上检查配置
我正在尝试在本地进行集成测试。我正在尝试拉动Mongo 3.6.0图像,我正在遵循以下错误。同样的事情也在非M1 Mac上工作。
错误org.testcontainers.dockerclient.dockerclient providerstrategy.lambda $ getfirstvalidStrategy $ 7- unixSocketClientProviderStrategy:flofefiend runtime exception( 2580000GQ/T/JNA - 714400992/JNA3748287117789473831。 TMP:dlopen(/private/var/folders/88/zxy8rm992j10d7_db5w5w5w2580000gq/t/jna--714400992/jna3748287482877171777777777777777747383831.tmp,0x0001 _DB5W5W2580000GQ/T/JNA - 714400992/ JNA3748287117789473831.TMP'(胖文件,但缺少兼容架构(具有'i386,x86_64',需要'arm64e')),'/usr/lib/jna374828748287117177789478947894383831.tmp'(No sike files))。根本原因不满意 (/private/var/folders/88/zxy8rm992j10d7_db5w5w5w2580000gq/t/jna---714400992/jna374828711777777777777777777777773831.tmp: 580000GQ/T/JNA - 714400992/JNA3748287117789473831.TMP,0x0001): tried: '/private/var/folders/88/zxy8rm992j10d7_db5w5w2580000gq/T/jna--714400992/jna3748287117789473831.tmp' (fat file, but missing compatible architecture (have 'i386,x86_64', need 'arm64e')), '/ usr/lib/jna3748287117789473831.tmp'(否这样的文件))
无法获得docker image image:remoteDockerimage(imageName = mongo = mongo:3.6.0,imagepullypolicy = defaultpullpolicy = defaultpullpolicy = defaultpullpolicy()()()()) 在org.testcontainers.containers.genericcontainer.getDockerimagename(genericContainer.java:1278) atrg.testcontainers.containers.genericcontainer.logger(genericContainer.java:612) atrg.testcontainers.containers.genericcontainer.dostart(genericContainer.java:317) ... 74 引起的是:Java.lang.IllegalStateException:以前寻找Docker环境的尝试失败了。不会重试。请参阅日志并检查配置 在org.testcontainers.dockerclient.dockerclientproviderstrategy.getFirstValidStrategy(dockerclientproviderstrategy.java:108) 在org.testcontainers.dockerclientfactory.getorinitializestrategy(dockerclientfactory.java:134) atrg.testcontainers.dockerclientfactory.client(dockerclientfactory.java:176) 在org.testcontainers.lazydockerclient.getDockerClient(lazydockerclient.java:14) 在org.testcontainers.lazydockerclient.inspectimagecmd(lazydockerclient.java:12) atrg.testcontainers.images.localimagescache.refreshcache(localimagescache.java:42) 在org.testcontainers.images.abstractimagepullpolicy.shouldpull(AbstractImagePullPolicy.Java:24) 在org.testcontainers.images.remotedockerimage.solve(remotedockerimage.java:66) 在org.testcontainers.images.remotedockerimage.solve(remotedockerimage.java:27) 在org.testcontainers.utility.lazyfuture.getResolvedValue(lazyfuture.java:17) atrg.testcontainers.utility.lazyfuture.get(lazyfuture.java:39) atorg.testcontainers.containers.genericcontainer.getDockerimagename(genericContainer.java:1276)
我在我的docker文件
#non root用户configuration 中是否遵循了非root用户配置 运行AddGroup -s -G 10001 AppGRP
&& adduser -s -d -u 10000 -s/sbin/nologin -h/opt/app/-g appgrp应用程序
&& Chown -R 10000:10001 /opt /app 用户10000
I'm trying to run Integration Tests on my local. I'm trying to pull mongo 3.6.0 image, I'm getting following errrors. The same thing is working on non-m1 mac.
ERROR org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$7 - UnixSocketClientProviderStrategy: failed with exception RuntimeException (java.lang.UnsatisfiedLinkError: /private/var/folders/88/zxy8rm992j10d7_db5w5w2580000gq/T/jna--714400992/jna3748287117789473831.tmp: dlopen(/private/var/folders/88/zxy8rm992j10d7_db5w5w2580000gq/T/jna--714400992/jna3748287117789473831.tmp, 0x0001): tried: '/private/var/folders/88/zxy8rm992j10d7_db5w5w2580000gq/T/jna--714400992/jna3748287117789473831.tmp' (fat file, but missing compatible architecture (have 'i386,x86_64', need 'arm64e')), '/usr/lib/jna3748287117789473831.tmp' (no such file)). Root cause UnsatisfiedLinkError
(/private/var/folders/88/zxy8rm992j10d7_db5w5w2580000gq/T/jna--714400992/jna3748287117789473831.tmp: dlopen(/private/var/folders/88/zxy8rm992j10d7_db5w5w2580000gq/T/jna--714400992/jna3748287117789473831.tmp, 0x0001): tried: '/private/var/folders/88/zxy8rm992j10d7_db5w5w2580000gq/T/jna--714400992/jna3748287117789473831.tmp' (fat file, but missing compatible architecture (have 'i386,x86_64', need 'arm64e')), '/usr/lib/jna3748287117789473831.tmp' (no such file))
Can't get Docker image: RemoteDockerImage(imageName=mongo:3.6.0, imagePullPolicy=DefaultPullPolicy())
at org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1278)
at org.testcontainers.containers.GenericContainer.logger(GenericContainer.java:612)
at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:317)
... 74 more
Caused by: java.lang.IllegalStateException: Previous attempts to find a Docker environment failed. Will not retry. Please see logs and check configuration
at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:108)
at org.testcontainers.DockerClientFactory.getOrInitializeStrategy(DockerClientFactory.java:134)
at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:176)
at org.testcontainers.LazyDockerClient.getDockerClient(LazyDockerClient.java:14)
at org.testcontainers.LazyDockerClient.inspectImageCmd(LazyDockerClient.java:12)
at org.testcontainers.images.LocalImagesCache.refreshCache(LocalImagesCache.java:42)
at org.testcontainers.images.AbstractImagePullPolicy.shouldPull(AbstractImagePullPolicy.java:24)
at org.testcontainers.images.RemoteDockerImage.resolve(RemoteDockerImage.java:66)
at org.testcontainers.images.RemoteDockerImage.resolve(RemoteDockerImage.java:27)
at org.testcontainers.utility.LazyFuture.getResolvedValue(LazyFuture.java:17)
at org.testcontainers.utility.LazyFuture.get(LazyFuture.java:39)
at org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1276)
i've following non root user configuration in my docker file
#Non Root User Configuration
RUN addgroup -S -g 10001 appGrp
&& adduser -S -D -u 10000 -s /sbin/nologin -h /opt/app/ -G appGrp app
&& chown -R 10000:10001 /opt/app
USER 10000
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这对我的M1 Max MacBook Pro起作用,您只需要在以下版本中添加额外的依赖性
This worked on my M1 Max Macbook pro, you just have to add an extra dependency with the following version
显然有一个库的库,
testContainers
使用了Apple M1芯片与不兼容的库。这导致contaerbasedTestSinitializer
找不到/运行Docker容器。升级testContainers
to版本1.16.3
为我工作。There is apparently a library that older versions of
testcontainers
uses that Apple M1 chips aren't compatible with. This causedContainerBasedTestsInitializer
to not find/run a docker container. Upgradingtestcontainers
to version1.16.3
worked for me.Docker Image
MONGO:3.6.0
没有ARM64
构建:您可以手动将Docker Image覆盖到
mongo:3.6.23
吗?该图像带有ARM64
支持,这应该起作用。The Docker image
mongo:3.6.0
has noarm64
built:Can you manually override the Docker image to
mongo:3.6.23
? That should work as this image comes witharm64
support.