You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Colima替代Docker运行Quarkus项目时遇Docker环境未找到错误

问题:Quarkus Dev模式启动失败(Colima替代Docker场景)

错误日志

执行./gradlew quarkusDev时出现以下错误:

2023-04-18 17:05:57,007 INFO  [org.tes.doc.DockerMachineClientProviderStrategy] (build-44) docker-machine executable was not found on PATH ***(masked on purpose) ***
2023-04-18 17:05:57,024 ERROR [org.tes.doc.DockerClientProviderStrategy] (build-44) Could not find a valid Docker environment. Please check configuration. Attempted configurations were:
        UnixSocketClientProviderStrategy: failed with exception InvalidConfigurationException (Could not find unix domain socket). Root cause NoSuchFileException (/var/run/docker.sock)As no valid configuration was found, execution cannot continue.
See https://www.testcontainers.org/on_failure.html for more details.
     2023-04-18 17:05:57,282 INFO  [org.tes.uti.ImageNameSubstitutor] (build-44) Image name substitution will be performed by: DefaultImageNameSubstitutor (composite of 'ConfigurationFileImageNameSubstitutor' and 'PrefixingImageNameSubstitutor')
<====2023-04-18 17:05:57,288 INFO  [io.qua.dep.dev.IsolatedDevModeMain] (main) Attempting to start live reload endpoint to recover from previous Quarkus startup failure
<====2023-04-18 17:05:57,613 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
        [error]: Build step io.quarkus.kafka.client.deployment.DevServicesKafkaProcessor#startKafkaDevService threw an exception: java.lang.RuntimeException: java.lang.IllegalStateException: Previous attempts to find a Docker environment failed. Will not retry. Please see logs and check configuration
        at io.quarkus.kafka.client.deployment.DevServicesKafkaProcessor.startKafkaDevService(DevServicesKafkaProcessor.java:105)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
        at java.base/java.lang.reflect.Method.invoke(Method.java:578)
        at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:909)
        at io.quarkus.builder.BuildContext.run(BuildContext.java:281)
        at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
        at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2449)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1478)
        at java.base/java.lang.Thread.run(Thread.java:1623)
        at org.jboss.threads.JBossThread.run(JBossThread.java:501)
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:212)
        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)
        at com.github.dockerjava.api.DockerClientDelegate.listContainersCmd(DockerClientDelegate.java:188)
        at io.quarkus.devservices.common.ContainerLocator.lookup(ContainerLocator.java:32)
        at io.quarkus.devservices.common.ContainerLocator.locateContainer(ContainerLocator.java:45)
        at io.quarkus.kafka.client.deployment.DevServicesKafkaProcessor.startKafka(DevServicesKafkaProcessor.java:222)
        at io.quarkus.kafka.client.deployment.DevServicesKafkaProcessor.startKafkaDevService(DevServicesKafkaProcessor.java:95)
        ... 9 more

环境信息

quarkus --version
2.16.6.Final

gradle --version
------------------------------------------------------------
Gradle 8.1
------------------------------------------------------------
Build time:   2023-04-12 12:07:45 UTC
Revision:     40ba32cde9d6daf2b92c39376d2758909dd6b813
Kotlin:       1.8.10
Groovy:       3.0.15
Ant:          Apache Ant(TM) version 1.10.11 compiled on July 10 2021
JVM:          20 (Homebrew 20)
OS:           Mac OS X 11.6.2 x86_64

colima version
colima version 0.5.4
git commit: feef4176f56a7dea487d43689317a9d7fe9de27e
runtime: docker
arch: x86_64
client: v20.10.22
server: v20.10.20

解决方案

问题根源是Quarkus Dev Services依赖的Testcontainers默认查找/var/run/docker.sock,但Colima的Docker socket路径为~/.colima/default/docker.sock,需要手动指定正确路径:

方法一:临时终端配置

在启动Quarkus前,执行以下命令设置环境变量:

export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
export DOCKER_HOST=unix://$HOME/.colima/default/docker.sock

然后重新运行./gradlew quarkusDev

方法二:永久环境配置

将上述环境变量添加到你的shell配置文件(如~/.zshrc或~/.bashrc):

echo 'export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock' >> ~/.zshrc
echo 'export DOCKER_HOST=unix://$HOME/.colima/default/docker.sock' >> ~/.zshrc

执行source ~/.zshrc(对应你的shell)使配置生效,之后启动Quarkus无需重复设置。

方法三:Quarkus配置文件指定

在项目的src/main/resources/application.properties中添加以下配置:

quarkus.devservices.docker.host=unix://${user.home}/.colima/default/docker.sock

保存后重新运行./gradlew quarkusDev即可。

内容的提问来源于stack exchange,提问作者Pranav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 08:02:56