【问题标题】:Unable to connect to Ryuk?无法连接到 Ryuk?
【发布时间】:2022-07-20 19:01:05
【问题描述】:

您好,我正在尝试从我的单元测试类中启动一个测试容器。

在我的测试课中,我正在使用以下内容

   @Container
    private static GenericContainer<?> testContainer =  new GenericContainer<>(TEST_IMAGE)
            .withCommand("sleep infinity")
//            .withLogConsumer(LOG_CONSUMER)
            .withNetwork(dockerNetwork).withNetworkAliases(TESTCONTAINER_NETWORK_ALIAS);

但是,当我运行测试时,出现以下错误

SEVERE: Caught exception while closing extension context: org.junit.jupiter.engine.descriptor.ClassExtensionContext@495ee280
java.lang.IllegalStateException: Could not connect to Ryuk at 172.17.0.1:4750
        at org.testcontainers.utility.ResourceReaper.start(ResourceReaper.java:227)
        at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:219)
        at org.testcontainers.DockerClientFactory$1.getDockerClient(DockerClientFactory.java:101)
        at com.github.dockerjava.api.DockerClientDelegate.authConfig(DockerClientDelegate.java:107)
        at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:316)
        at org.testcontainers.junit.jupiter.TestcontainersExtension$StoreAdapter.start(TestcontainersExtension.java:242)
        at org.testcontainers.junit.jupiter.TestcontainersExtension$StoreAdapter.access$200(TestcontainersExtension.java:229)
        at org.testcontainers.junit.jupiter.TestcontainersExtension.lambda$null$1(TestcontainersExtension.java:59)
        at org.junit.jupiter.engine.execution.ExtensionValuesStore.lambda$getOrComputeIfAbsent$0(ExtensionValuesStore.java:81)
        at org.junit.jupiter.engine.execution.ExtensionValuesStore$MemoizingSupplier.get(ExtensionValuesStore.java:182)
        at org.junit.jupiter.engine.execution.ExtensionValuesStore.getOrComputeIfAbsent(ExtensionValuesStore.java:84)
        at org.junit.jupiter.engine.execution.NamespaceAwareStore.getOrComputeIfAbsent(NamespaceAwareStore.java:53)
        at org.testcontainers.junit.jupiter.TestcontainersExtension.lambda$beforeAll$2(TestcontainersExtension.java:59)
        at java.util.ArrayList.forEach(ArrayList.java:1259)
        at org.testcontainers.junit.jupiter.TestcontainersExtension.beforeAll(TestcontainersExtension.java:59)
        at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllCallbacks$7(ClassBasedTestDescriptor.java:359)
        at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeBeforeAllCallbacks(ClassBasedTestDescriptor.java:359)
        at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:189)
        at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:78)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:132)
        at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:125)
        at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:135)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:123)
        at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:122)
        at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:80)
        at java.util.ArrayList.forEach(ArrayList.java:1259)
        at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
        
       

感谢任何帮助 谢谢

【问题讨论】:

  • 您能分享更多关于您的环境的信息吗?哪个操作系统,Docker是如何安装的?

标签: testcontainers testcontainers-junit5


【解决方案1】:

偶然在这里偶然发现:当我没有运行 docker 引擎和服务时,我遇到了同样的问题。 你安装了 docker 并且服务正在运行吗?

【讨论】:

    【解决方案2】:
    java.lang.IllegalStateException: Could not connect to Ryuk at
    

    这可能是由于运行 docker 的(虚拟机)环境管理的磁盘空间不足。如果是这样,您需要清理并回收一些空间。

    回收磁盘空间:

     docker system prune
    

    如果在 Windows 上运行,您可能需要重新启动。

    我使用 wsl 并且可以确认 wsl --shutdown 不够,需要重新启动。

    【讨论】:

      猜你喜欢
      • 2021-12-10
      • 2021-07-27
      • 2019-08-22
      • 2022-10-04
      • 1970-01-01
      • 2021-10-13
      • 2018-02-07
      • 1970-01-01
      • 2020-09-05
      相关资源
      最近更新 更多