Testcontainers-java: Could not connect to Ryuk at localhost:49154

Created on 16 Dec 2020  Â·  16Comments  Â·  Source: testcontainers/testcontainers-java

Hi,

I am using Docker Desktop on Windows 10.

Version 3.0.0 (50684)
Engine: 20.10.0
Compose: 1.27.4
Kubernetes: v1.19.3
Notary: 0.6.1
Credential Helper: 0.6.3
Snyk: v1.432.0

When running my test I see that the docker container for Ryuk is created and running.
But my test tells me "Could not connect to Ryuk at localhost:49154".

Can somebody help?

Thanks!

Failed to load ApplicationContext
java.lang.IllegalStateException: Failed to load ApplicationContext
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:132)
    at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:123)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:118)
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
    at org.springframework.boot.test.autoconfigure.SpringBootDependencyInjectionTestExecutionListener.prepareTestInstance(SpringBootDependencyInjectionTestExecutionListener.java:43)
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:244)
    at org.springframework.test.context.junit.jupiter.SpringExtension.postProcessTestInstance(SpringExtension.java:98)
    at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$6(ClassBasedTestDescriptor.java:350)
    at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.executeAndMaskThrowable(ClassBasedTestDescriptor.java:355)
    at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeTestInstancePostProcessors$7(ClassBasedTestDescriptor.java:350)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.StreamSpliterators$WrappingSpliterator.forEachRemaining(StreamSpliterators.java:312)
    at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:735)
    at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
    at java.base/java.util.stream.Streams$ConcatSpliterator.forEachRemaining(Streams.java:734)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:658)
    at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeTestInstancePostProcessors(ClassBasedTestDescriptor.java:349)
    at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$instantiateAndPostProcessTestInstance$4(ClassBasedTestDescriptor.java:270)
    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
    at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.instantiateAndPostProcessTestInstance(ClassBasedTestDescriptor.java:269)
    at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$2(ClassBasedTestDescriptor.java:259)
    at java.base/java.util.Optional.orElseGet(Optional.java:369)
    at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$testInstancesProvider$3(ClassBasedTestDescriptor.java:258)
    at org.junit.jupiter.engine.execution.TestInstancesProvider.getTestInstances(TestInstancesProvider.java:31)
    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$prepare$0(TestMethodTestDescriptor.java:101)
    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:100)
    at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.prepare(TestMethodTestDescriptor.java:65)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$prepare$1(NodeTestTask.java:111)
    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.prepare(NodeTestTask.java:111)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:79)
    at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:212)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor.execute(NodeTestTask.java:192)
    at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:139)
    at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.lambda$execute$2(TestTemplateTestDescriptor.java:107)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.base/java.util.stream.ReferencePipeline$11$1.accept(ReferencePipeline.java:442)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
    at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
    at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:274)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
    at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:107)
    at org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor.execute(TestTemplateTestDescriptor.java:42)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139)
    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:129)
    at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
    at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
    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:129)
    at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
    at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
    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:129)
    at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127)
    at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
    at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
    at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:248)
    at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$5(DefaultLauncher.java:211)
    at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:226)
    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:199)
    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:132)
    at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:99)
    at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:79)
    at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:75)
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
    at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
    at com.sun.proxy.$Proxy5.stop(Unknown Source)
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:133)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:567)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
    at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:182)
    at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:164)
    at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:414)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
    at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'liquibase' defined in class path resource [org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]: Invocation of init method failed; nested exception is com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Could not connect to Ryuk at localhost:49154
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1794)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:311)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1109)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
    at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:120)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
    at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124)
    ... 145 more
Caused by: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Could not connect to Ryuk at localhost:49154
    at com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:595)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:581)
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
    at liquibase.integration.spring.SpringLiquibase.afterPropertiesSet(SpringLiquibase.java:311)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1790)
    ... 164 more
Caused by: java.lang.IllegalStateException: Could not connect to Ryuk at localhost:49154
    at org.testcontainers.utility.ResourceReaper.start(ResourceReaper.java:198)
    at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:205)
    at org.testcontainers.LazyDockerClient.getDockerClient(LazyDockerClient.java:14)
    at org.testcontainers.LazyDockerClient.authConfig(LazyDockerClient.java:12)
    at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:310)
    at org.testcontainers.jdbc.ContainerDatabaseDriver.connect(ContainerDatabaseDriver.java:118)
    at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:121)
    at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
    at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
    at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
    at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560)
    ... 169 more

Most helpful comment

Same here. Thinks mentioned above does not help. It worked great few days ago. I also tried -Djava.net.preferIPv4Stack=true and disabling windows defender without luck.
Thx,
Ivos

edit: seems it is related to changed dynamic port range reservation by some windows update, see https://stackoverflow.com/a/64959783/535560

SOLUTION: after running netcfg -d from https://github.com/docker/for-win/issues/3171#issuecomment-731096674 and rebooting computer, testcontainers works again. windows woodoo detected :)

I have tested with pgsql container and it looks like that somethink have changed after some win-update.

edit 2:
I want just to note, that I am having this issue kind of regularly.

This does not work

docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                     NAMES
a46a3c46f101   postgres:12.1   "docker-entrypoint.s…"   6 seconds ago   Up 5 seconds   0.0.0.0:49159->5432/tcp   docker-dev_pgsql-transparent_1

with compose

    ports:
      - 5432

This works correctly

docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                    NAMES
fa981888fa45   postgres:12.1   "docker-entrypoint.s…"   8 seconds ago   Up 6 seconds   0.0.0.0:5432->5432/tcp   docker-dev_pgsql-transparent_1

with compose

    ports:
      - 5432:5432

when I choose large port range, i got error

    ports:
      - 49159:5432

console

docker-compose up
Found orphan containers (docker-dev_zookeeper_1, docker-dev_kafka_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Recreating docker-dev_pgsql-transparent_1 ...
pgsql-transparent_1  | 2021-01-07 12:38:51.092 UTC [1] LOG:  received smart shutdown request
pgsql-transparent_1  | 2021-01-07 12:38:51.098 UTC [1] LOG:  background worker "logical replication launcher" (PID 33) exited with exit code 1
pgsql-transparent_1  | 2021-01-07 12:38:51.099 UTC [28] LOG:  shutting down
pgsql-transparent_1  | 2021-01-07 12:38:51.133 UTC [1] LOG:  database system is shut down
Recreating docker-dev_pgsql-transparent_1 ... error

ERROR: for docker-dev_pgsql-transparent_1  Cannot start service pgsql-transparent: Ports are not available: listen tcp 0.0.0.0:49159: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

ERROR: for pgsql-transparent  Cannot start service pgsql-transparent: Ports are not available: listen tcp 0.0.0.0:49159: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
Encountered errors while bringing up the project.

docker compose file

version: '3'
services:
  pgsql-transparent:
    image: "postgres:12.1"
    env_file:
      - database.env
    ports:
      - 5432:5432
volumes:
  database-data: # named volumes can be managed easier using docker-compose

my docker is

docker version
Client: Docker Engine - Community
 Cloud integration: 1.0.4
 Version:           20.10.2
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        2291f61
 Built:             Mon Dec 28 16:14:16 2020
 OS/Arch:           windows/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.2
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8891c58
  Built:            Mon Dec 28 16:15:23 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

my current port exlusions

netsh interface ipv4 show excludedportrange protocol=tcp

Protocol tcp Port Exclusion Ranges

Start Port    End Port
----------    --------
      5357        5357
     49152       49251
     49252       49351
     49352       49451
     49452       49551
     49552       49651
     49674       49773
     49774       49873
     50000       50059     *
     64385       64484
     64485       64584
     64585       64684
     64685       64784
     64785       64884
     64885       64984
     64985       65084
     65172       65271
     65417       65516

* - Administered port exclusions.

and

netsh int ipv4 show dynamicport tcp

Protocol tcp Dynamic Port Range
---------------------------------
Start Port      : 49152
Number of Ports : 16384

All 16 comments

Hey, had the same issue with my projects, for some reason Ryuk started failing and I was only able to get my project to build by disabling ryuk via environment vars in Maven failsafe. e.g.

`

org.apache.maven.plugins

                 <artifactId>maven-failsafe-plugin</artifactId>
                 <executions>
                     <execution>
                         <goals>
                             <goal>verify</goal>
                             <goal>integration-test</goal>
                         </goals>
                         <configuration>
                             <argLine>@{argLine}</argLine>
                             <systemPropertyVariables>
                                 <java.security.egd>file:/dev/./urandom</java.security.egd>
                             </systemPropertyVariables>
                             <environmentVariables>
                                 <TESTCONTAINERS_RYUK_DISABLED>true</TESTCONTAINERS_RYUK_DISABLED>
                             </environmentVariables>
                             <trimStackTrace>false</trimStackTrace>
                         </configuration>
                     </execution>
                 </executions>
             </plugin>`

Also, supposedly using version 1.15.1 of test containers fixes this issue, but I didn't try that out yet.

Hi @abe546 ,

Disabling it via environment variable TESTCONTAINERS_RYUK_DISABLED did the trick.
At least the tests run again.

I also had to put the ip of registry-1.docker.io in /Windows/System32/drivers/etc/hosts file:

52.4.20.24 registry-1.docker.io

Still, it looks like a bug.

Additional info: After running my test once with TESTCONTAINERS_RYUK_DISABLED=true i was able to run the tests again without this environment variable.

I don´t know why but now it works also without TESTCONTAINERS_RYUK_DISABLED=true.

Just started out with TestContainer and got the same error on my first run. Really disappointed. 😢

Windows 10
Docker Desktop 3.0.0
Test Container Version 1.15.1

21:29:20.394 [main] DEBUG org.testcontainers.shaded.com.github.dockerjava.core.exec.InspectContainerCmdExec - GET: DefaultWebTarget{path=[/containers/5409773a80d2342cbdc6a5c1b9533749bd23c7dc837d8378575e49c4bee70222/json], queryParams={}}
21:29:22.593 [testcontainers-ryuk] WARN org.testcontainers.utility.ResourceReaper - Can not connect to Ryuk at localhost:55005
java.net.ConnectException: Connection refused: connect
    at java.base/java.net.PlainSocketImpl.connect0(Native Method)
....

Ryuk's container logs:

2020/12/20 00:31:50 Pinging Docker...
2020/12/20 00:31:50 Docker daemon is available!
2020/12/20 00:31:50 Starting on port 8080...
2020/12/20 00:31:50 Started!

May I add something, as the issue still open? I've come to the same problem on Windows and Docker Desktop versions.
The thing is: localhost address was resolving to the IPV6, but the ports were accessable only through IPV4. Although the problem persisted only for the random port ranges. So, any given port, i.e. 49156, would not respond, even though I'd started the docker containers myself.

As a workaround - because disabling Ryuk would not resolve it at all, once ports still needed to test my API - I used an etc/hosts entry, forcing 127.0.0.1 address so I could point TESTCONTAINERS_HOST_OVERRIDE env to it and go ahead with my integration tests.

The only observations I have are that I'm using WSL2 plus MicroShed Test Framework and that I do not know if the first is interfering in some way.

Hello,

I've got the same issue : "Can not connect to Ryuk at localhost:xxxxx" due to a java.net.ConnectException: Connection refused

I'm on :

  • Windows 10
  • Docker Desktop 3.0.0 with WSL2
  • Test Container Version 1.15.1

I'm running my tests with IntelliJ on windows not in WSL2

My workaround : disable WSL2 and switch back to hyper V

@fb33 , same situation here.
After my post, I didn't work on my code again. When I ran it today it worked, no change.

Can somebody try adding -Djava.net.preferIPv4Stack=true to the JVM options and check whether it helps or not?

@wallysoncarvalho same here ! ;-)
I re-switched to WSL2 yesterday because I didn't use testportainer for the rest of the day.
And this morning I ran the tests using testportainer, it works !!...
Nothing change but it works fine today... weird...

Can somebody try adding -Djava.net.preferIPv4Stack=true to the JVM options and check whether it helps or not?

Man... some kind of voodoo. Same @fb33 and @wallysoncarvalho here. I was trying to test your approach, @bsideup. It worked. But then I tried without it and it worked too.

My project was working some weeks before the problem came. It stopped suddenly.

If I could bet... Windows Updates. There are a lot of Windows Defender updates history amidst the time I was hit by the problem and now. I tested without Windows Firewall, but I did not disabled Defender for the tests in the past days. My bad.... apologies.

But the IPV6 and 4 tests I did It for real setting and unsetting TESTCONTAINERS_HOST_OVERRIDE to check my hypothesis. I tested the port ranges too. Running myself the containers with the random port ranges, i.e. 49154, and 18080. The latest worked and the earliest did not.

But, for sure, It is not a framework problem at all. I did test by that time on a Linux Virtual Machine and it worked too.

Same here. Thinks mentioned above does not help. It worked great few days ago. I also tried -Djava.net.preferIPv4Stack=true and disabling windows defender without luck.
Thx,
Ivos

edit: seems it is related to changed dynamic port range reservation by some windows update, see https://stackoverflow.com/a/64959783/535560

SOLUTION: after running netcfg -d from https://github.com/docker/for-win/issues/3171#issuecomment-731096674 and rebooting computer, testcontainers works again. windows woodoo detected :)

I have tested with pgsql container and it looks like that somethink have changed after some win-update.

edit 2:
I want just to note, that I am having this issue kind of regularly.

This does not work

docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                     NAMES
a46a3c46f101   postgres:12.1   "docker-entrypoint.s…"   6 seconds ago   Up 5 seconds   0.0.0.0:49159->5432/tcp   docker-dev_pgsql-transparent_1

with compose

    ports:
      - 5432

This works correctly

docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS                    NAMES
fa981888fa45   postgres:12.1   "docker-entrypoint.s…"   8 seconds ago   Up 6 seconds   0.0.0.0:5432->5432/tcp   docker-dev_pgsql-transparent_1

with compose

    ports:
      - 5432:5432

when I choose large port range, i got error

    ports:
      - 49159:5432

console

docker-compose up
Found orphan containers (docker-dev_zookeeper_1, docker-dev_kafka_1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Recreating docker-dev_pgsql-transparent_1 ...
pgsql-transparent_1  | 2021-01-07 12:38:51.092 UTC [1] LOG:  received smart shutdown request
pgsql-transparent_1  | 2021-01-07 12:38:51.098 UTC [1] LOG:  background worker "logical replication launcher" (PID 33) exited with exit code 1
pgsql-transparent_1  | 2021-01-07 12:38:51.099 UTC [28] LOG:  shutting down
pgsql-transparent_1  | 2021-01-07 12:38:51.133 UTC [1] LOG:  database system is shut down
Recreating docker-dev_pgsql-transparent_1 ... error

ERROR: for docker-dev_pgsql-transparent_1  Cannot start service pgsql-transparent: Ports are not available: listen tcp 0.0.0.0:49159: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

ERROR: for pgsql-transparent  Cannot start service pgsql-transparent: Ports are not available: listen tcp 0.0.0.0:49159: bind: An attempt was made to access a socket in a way forbidden by its access permissions.
Encountered errors while bringing up the project.

docker compose file

version: '3'
services:
  pgsql-transparent:
    image: "postgres:12.1"
    env_file:
      - database.env
    ports:
      - 5432:5432
volumes:
  database-data: # named volumes can be managed easier using docker-compose

my docker is

docker version
Client: Docker Engine - Community
 Cloud integration: 1.0.4
 Version:           20.10.2
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        2291f61
 Built:             Mon Dec 28 16:14:16 2020
 OS/Arch:           windows/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.2
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8891c58
  Built:            Mon Dec 28 16:15:23 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

my current port exlusions

netsh interface ipv4 show excludedportrange protocol=tcp

Protocol tcp Port Exclusion Ranges

Start Port    End Port
----------    --------
      5357        5357
     49152       49251
     49252       49351
     49352       49451
     49452       49551
     49552       49651
     49674       49773
     49774       49873
     50000       50059     *
     64385       64484
     64485       64584
     64585       64684
     64685       64784
     64785       64884
     64885       64984
     64985       65084
     65172       65271
     65417       65516

* - Administered port exclusions.

and

netsh int ipv4 show dynamicport tcp

Protocol tcp Dynamic Port Range
---------------------------------
Start Port      : 49152
Number of Ports : 16384

Thanks bedla that worked great for me! Scary seeing all the network interfaces deleted but luckily it left my TAP adapters alone :)

I have the same problem with Docker Desktop 3.x on Windows 10 20H2 with WSL2.

I noticed that I always must start Docker containers with explicitly exposed ports, e.g., docker run -p 8080:8080....

Although it is not recommended, I tried to run my test container with fixed port-binding and deactivated Ryuk container - and it works:

In file testcontainer.properties:

ryuk.container.privileged = false

Environment variable:

TESTCONTAINERS_RYUK_DISABLED=true

In java test code (here Elasticsearch):

Consumer<CreateContainerCmd> cmd = e -> e.withPortBindings(new PortBinding(Ports.Binding.bindPort(9200), new ExposedPort(9200)));
elasticsearch = new ElasticsearchContainer(
    DockerImageName
        .parse(ELASTICSEARCH_CONTAINER_PROXY)
        .asCompatibleSubstituteFor(ELASTICSEARCH_CONTAINER)
    ).withExposedPorts(9200).withCreateContainerCmdModifier(cmd);

elasticsearch.start();

I suppose that this also may work with dynamic ports. Maybe you could solve this problem in the code by adding an option to use explicitly exposed (random) ports when starting the containers (and for the Ryuk container too)?

As for me, a restarted my Docker Desktop, and the issue has gone.

As for me, a restarted my Docker Desktop, and the issue has gone.

Yes, it works. But restarting docker several times a day isn't optimal solution.

@0Prime please consider reporting to the Docker project as it seems to be something with Docker.

As it seems to be related to https://github.com/docker/for-win/issues/3171 (as @bedla pointed out), I will close this issue since there isn't something we can do about it.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

andredasilvapinto picture andredasilvapinto  Â·  3Comments

denis-zhdanov picture denis-zhdanov  Â·  3Comments

McKratt picture McKratt  Â·  4Comments

ayedo picture ayedo  Â·  3Comments

micheal-swiggs picture micheal-swiggs  Â·  4Comments