testcontainers / testcontainers/testcontainers-java

Since Docker 20.10.6: Error starting userland proxy: listen tcp6

Offen
#4,126 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

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

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.