-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed as not planned
Closed as not planned
Copy link
Labels
Description
Module
Core
Testcontainers version
1.21.1
Using the latest Testcontainers version?
Yes
Host OS
MacOS
Host Arch
ARM
Docker version
Client: Docker Engine - Community
Version: 28.2.2
API version: 1.50
Go version: go1.24.3
Git commit: e6534b4eb7
Built: Fri May 30 09:39:08 2025
OS/Arch: darwin/arm64
Context: colima
Server: Docker Engine - Community
Engine:
Version: 28.2.2
API version: 1.50 (minimum version 1.24)
Go version: go1.24.3
Git commit: 45873be
Built: Fri May 30 12:07:29 2025
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.7.27
GitCommit: 05044ec0a9a75232cad458027ca83437aae3f4da
runc:
Version: 1.2.5
GitCommit: v1.2.5-0-g59923ef
docker-init:
Version: 0.19.0
GitCommit: de40ad0What happened?
When I want to use new feature of docker
container.withCreateContainerCmdModifier(cmd -> {
final Mount mount =
new Mount().withType(MountType.IMAGE)
.withSource("myimage:latest")
.withTarget("/image");
cmd.getHostConfig().withMounts(List.of(mount));
});
I get error that API 1.48 is required, but in fact I use 1.50
it looked at code and it seems that 1.32 is enforced and set before real version is read from docker client
Lines 406 to 408 in 63189c8
| if (configBuilder.build().getApiVersion() == RemoteApiVersion.UNKNOWN_VERSION) { | |
| configBuilder.withApiVersion(RemoteApiVersion.VERSION_1_32); | |
| } |
if this value is not set, it works because of code in docker-java
RemoteApiVersion apiVersion = getDockerClientConfig().getApiVersion();
if (apiVersion != RemoteApiVersion.UNKNOWN_VERSION) {
resource = "/" + apiVersion.asWebPathPart() + resource;
}
Relevant log output
org.testcontainers.containers.ContainerLaunchException: Container startup failed for image artifactory.tomtomgroup.com/genesis-platform-docker/coredb/main-ws:7.0.0-SNAPSHOT
at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:351)
at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:322)
at
....
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
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:336)
... 7 more
Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container
at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:556)
at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:346)
at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)
... 8 more
Caused by: com.github.dockerjava.api.exception.BadRequestException: Status 400: {"message":"Mount type \"Image\" needs API v1.48 or newer"}
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:430)Additional Information
No response