testcontainers / testcontainers-java

Testcontainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
https://testcontainers.org
MIT License
7.99k stars 1.64k forks source link

[Bug]: Docker communication error using DOCKER_HOST localhost (1.17+) #8773

Open NeelMdM opened 3 months ago

NeelMdM commented 3 months ago

Module

Core

Testcontainers version

1.19.8

Using the latest Testcontainers version?

Yes

Host OS

Windows 11

Host Arch

AMD64

Docker version

Client: Docker Engine - Community
 Version:           24.0.7
 API version:       1.43
 Go version:        go1.20.10
 Git commit:        afdd53b
 Built:             Thu Oct 26 09:08:01 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.7
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.10
  Git commit:       311b9ff
  Built:            Thu Oct 26 09:08:01 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.25
  GitCommit:        d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f
 runc:
  Version:          1.1.10
  GitCommit:        v1.1.10-0-g18a0cb0
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

What happened?

When I start my Junit tests in IntelliJ, it is failing and logging :

2024-06-12T11:04:16.067+02:00 WARN --- [ main] o.t.d.DockerClientProviderStrategy : DOCKER_HOST tcp://localhost:2375 is not listening 2024-06-12T11:04:16.099+02:00 INFO --- [ main] .t.d.DockerMachineClientProviderStrategy : docker-machine executable was not found on PATH ([C:\...]) 2024-06-12T11:04:16.102+02:00 ERROR --- [ main] o.t.d.DockerClientProviderStrategy : Could not find a valid Docker environment. Please check configuration. Attempted configurations were: As no valid configuration was found, execution cannot continue.

I have configured my DOCKER_HOST with tcp://localhost:2375 and since testcontainers 1.17.0, it is no longer working as is. I since changed my DOCKER_HOST replacing "localhost" with the WSL eth0 IP and it is working again, but I don't think it is a good solution.

I'm using WSL2, here is the WSL --version detail :

Version WSL : 2.1.5.0 Version du noyau : 5.15.146.1-2 Version WSLg : 1.0.60 Version MSRDC : 1.2.5105 Version direct3D : 1.611.1-81528511 Version de DXCore : 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp Version de Windows : 10.0.22631.3593

This problem only occur since testcontainers 1.17.0 and later versions. Testcontainers 1.16.3 (and older) works great.

My internet browser is accessing DOCKER through http://localhost:2375/ (or my WSL eth0 IP) perfectly.

Relevant log output

No response

Additional Information

No response