[Bug]: Cannot reuse Selenium BrowserWebDriverContainers under Linux

Offen Anfängerfreundlich
#11,941 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
78/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Ruhig
Tech-Stack
docker, java
Bereich
testing

Rechercherichtung

Beginne in modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java etwa bei Zeile 224, wo der /dev/shm-Bind hinzugefügt wird. Reproduziere das Problem mit dem bereitgestellten BuggyTest unter Linux und überprüfe anschließend, dass das Starten desselben BrowserWebDriverContainer nach dem Stoppen nicht mehr mit einem Fehler wegen eines doppelten Mount-Punkts fehlschlägt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

type/bug
Module

Selenium

Testcontainers version

2.0.5

Using the latest Testcontainers version?

Yes

Host OS

Ubuntu 26 LTS

Host Arch

x86-64

Docker version
Client:
 Version:           29.6.2
 API version:       1.55
 Go version:        go1.26.5
 Git commit:        dfc4efb
 Built:             Thu Jul 16 16:11:35 2026
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Desktop 4.83.0 (234302)
 Engine:
  Version:          29.6.2
  API version:      1.55 (minimum version 1.40)
  Go version:       go1.26.5
  Git commit:       3d80467
  Built:            Thu Jul 16 16:12:20 2026
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v2.2.5
  GitCommit:        e53c7c1516c3b2bff98eb76f1f4117477e6f4e66
 runc:
  Version:          1.3.6
  GitCommit:        v1.3.6-0-g491b69ba
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
What happened?

When trying to reuse a BrowserWebDriverContainer under Linux, starting the container after stopping it once fails with com.github.dockerjava.api.exception.BadRequestException: Status 400: {"message":"Duplicate mount point: /dev/shm"}. Under Windows the following test succeeds - under Linux it does not.

Reproducer:

import org.junit.jupiter.api.Test;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.selenium.BrowserWebDriverContainer;
import org.testcontainers.utility.DockerImageName;

@Testcontainers
public class BuggyTest {

    @Container
    static final BrowserWebDriverContainer BROWSER_WEB_DRIVER_CONTAINER = new BrowserWebDriverContainer(
           DockerImageName.parse("selenium/standalone-chrome:148.0-20260505")
    );

    @Test
    void testContainer() {
        BROWSER_WEB_DRIVER_CONTAINER.start();
        BROWSER_WEB_DRIVER_CONTAINER.stop();

        BROWSER_WEB_DRIVER_CONTAINER.start(); //this fails
        BROWSER_WEB_DRIVER_CONTAINER.stop();
    }

}
Relevant log output
org.testcontainers.containers.ContainerLaunchException: Container startup failed for image selenium/standalone-chrome:148.0-20260505
        at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:346)
        at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:317)
        at org.example.testcontainerseleniumbugdemo.BuggyTest.testContainer(BuggyTest.java:22)
Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception
        at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88)
        at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:331)
        ... 2 more
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
        at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:551)
        at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:341)
        at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)
        ... 3 more
Caused by: com.github.dockerjava.api.exception.BadRequestException: Status 400: {"message":"Duplicate mount point: /dev/shm"}

        at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.execute(DefaultInvocationBuilder.java:237)
        at org.testcontainers.shaded.com.github.dockerjava.core.DefaultInvocationBuilder.post(DefaultInvocationBuilder.java:124)
        at org.testcontainers.shaded.com.github.dockerjava.core.exec.CreateContainerCmdExec.execute(CreateContainerCmdExec.java:37)
        at org.testcontainers.shaded.com.github.dockerjava.core.exec.CreateContainerCmdExec.execute(CreateContainerCmdExec.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:33)
        at org.testcontainers.shaded.com.github.dockerjava.core.command.CreateContainerCmdImpl.exec(CreateContainerCmdImpl.java:608)
        at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:425)
        ... 5 more
Additional Information

The problem is most likely located in https://github.com/testcontainers/testcontainers-java/blob/main/modules/selenium/src/main/java/org/testcontainers/containers/BrowserWebDriverContainer.java#L224 that adds the /dev/shm bind again, not checking that the bind has been already added previously.

Vorherrschende Sprache
Java
Sterne
8.7k
Forks
1.9k
Ø Merge
2 T. 17 Std.
Gemergte PRs (30 T.)
9

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus testcontainers/testcontainers-java

Alle Issues in testcontainers/testcontainers-java

Ähnliche Issues

Weitere Issues zu Java

Neue Issues direkt in Ihr Postfach

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