java.lang.illegalstateException:找不到有效的Docker环境。请参阅日志并在M1 Mac上检查配置

发布于 2025-02-10 03:35:28 字数 2828 浏览 2 评论 0原文

我正在尝试在本地进行集成测试。我正在尝试拉动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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

司马昭之心 2025-02-17 03:35:28

这对我的M1 Max MacBook Pro起作用,您只需要在以下版本中添加额外的依赖性

        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>

This worked on my M1 Max Macbook pro, you just have to add an extra dependency with the following version

        <dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>5.7.0</version>
            <scope>test</scope>
        </dependency>
陌上芳菲 2025-02-17 03:35:28

显然有一个库的库,testContainers使用了Apple M1芯片与不兼容的库。这导致contaerbasedTestSinitializer找不到/运行Docker容器。升级testContainers to版本1.16.3为我工作。

<testcontainers.version>1.16.3</testcontainers.version>

There is apparently a library that older versions of testcontainers uses that Apple M1 chips aren't compatible with. This caused ContainerBasedTestsInitializer to not find/run a docker container. Upgrading testcontainers to version 1.16.3 worked for me.

<testcontainers.version>1.16.3</testcontainers.version>
简美 2025-02-17 03:35:28

Docker Image MONGO:3.6.0没有ARM64 构建

您可以手动将Docker Image覆盖到mongo:3.6.23吗?该图像带有ARM64支持,这应该起作用。

The Docker image mongo:3.6.0 has no arm64 built:

enter image description here

Can you manually override the Docker image to mongo:3.6.23? That should work as this image comes with arm64 support.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文