testcontainers / testcontainers/testcontainers-java
Since Docker 20.10.6: Error starting userland proxy: listen tcp6
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Java
- Sterne
- 8.7k
- Forks
- 1.9k
- Ø Merge
- 2 T. 17 Std.
- Gemergte PRs (30 T.)
- 9
Beschreibung
With Docker 20.10.6 docker is failing when ipv6 is disabled.
There seems to be a workaround by explicitly specifying the network interface. For example:
$ docker run --rm -d -p 0.0.0.0:8080:80 nginx:latest
Is there a possibility to specify the network inteface using the GenericContainer? I cannot find anything in the API. Any workaround is appreciated, since all docker tests are failing due to this issue and it is no possible to enable ipv6 on our CI environment.
See also: docker ipv6 disabled issue
The following is the actual error that occurs during running a testcontainer;
``
com.github.dockerjava.api.exception.InternalServerErrorException: Status 500: {"message":"driver failed programming external connectivity on endpoint testcontainers-ryuk-dad37a3e-2c74-4bff-bd37-0f0051d3b934 (1ef25a1f64f846100fdc06fab4ff91322026ddf8bc70a312049358348d4a94fb): Error starting userland proxy: listen tcp6 [::]:49212: socket: address family not supported by protocol"}
at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:247)
at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.post(DefaultInvocationBuilder.java:102)
at org.testcontainers.shaded.com.github.dockerjava.core.exec.StartContainerCmdExec.execute(StartContainerCmdExec.java:31)
at org.testcontainers.shaded.com.github.dockerjava.core.exec.StartContainerCmdExec.execute(StartContainerCmdExec.java:13)
at org.testcontainers.shaded.com.github.dockerjava.core.exec.AbstrSyncDockerCmdExec.exec(AbstrSyncDockerCmdExec.java:21)
at org.testcontainers.shaded.com.github.dockerjava.core.command.AbstrDockerCmd.exec(AbstrDockerCmd.java:35)
at org.testcontainers.shaded.com.github.dockerjava.core.command.StartContainerCmdImpl.exec(StartContainerCmdImpl.java:43)
at org.testcontainers.utility.ResourceReaper.start(ResourceReaper.java:110)
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.containers.GenericContainer.starting(GenericContainer.java:1029)
at org.testcontainers.containers.FailureDetectingExternalResource$1.evaluate(FailureDetectingExternalResource.java:29)
``
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne damit, GenericContainer.start() und ResourceReaper.start() anhand des Stacktraces nachzuverfolgen, und untersuche dann, wie Container-Portbindungen an Docker übergeben werden. Reproduziere den Fehler bei deaktiviertem IPv6 und vergleiche ihn mit dem dokumentierten 0.0.0.0-Workaround. Als erledigt gilt die Aufgabe, wenn Docker-Tests in dieser CI-Umgebung mit einer expliziten Option für die Netzwerkschnittstelle erfolgreich gestartet werden können.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- docker, java
- Bereich
- devops, testing
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100