diff --git a/core/src/main/java/org/testcontainers/DockerClientFactory.java b/core/src/main/java/org/testcontainers/DockerClientFactory.java index 6cf8f716704..cc85645b2b4 100644 --- a/core/src/main/java/org/testcontainers/DockerClientFactory.java +++ b/core/src/main/java/org/testcontainers/DockerClientFactory.java @@ -199,7 +199,7 @@ public void close() { }; log.info("Docker host IP address is {}", strategy.getDockerHostIpAddress()); - Info dockerInfo = client.infoCmd().exec(); + Info dockerInfo = strategy.getInfo(); Version version = client.versionCmd().exec(); activeApiVersion = version.getApiVersion(); activeExecutionDriver = dockerInfo.getExecutionDriver(); @@ -434,4 +434,9 @@ public String getActiveExecutionDriver() { public boolean isUsing(Class providerStrategyClass) { return strategy != null && providerStrategyClass.isAssignableFrom(this.strategy.getClass()); } + + @UnstableAPI + public Info getInfo() { + return getOrInitializeStrategy().getInfo(); + } } diff --git a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java index cf091e94328..834e670438a 100644 --- a/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java +++ b/core/src/main/java/org/testcontainers/dockerclient/DockerClientProviderStrategy.java @@ -65,6 +65,9 @@ public abstract class DockerClientProviderStrategy { private String dockerHostIpAddress; + @Getter + private Info info; + private final RateLimiter PING_RATE_LIMITER = RateLimiterBuilder.newBuilder() .withRate(10, TimeUnit.SECONDS) .withConstantThroughput() @@ -249,7 +252,7 @@ private static boolean tryOutStrategy(List configurationFailures, Docker return false; } - Info info = strategy.getDockerClient().infoCmd().exec(); + strategy.info = strategy.getDockerClient().infoCmd().exec(); log.info("Found Docker environment with {}", strategy.getDescription()); log.debug( "Transport type: '{}', Docker host: '{}'", @@ -258,7 +261,7 @@ private static boolean tryOutStrategy(List configurationFailures, Docker ); log.debug("Checking Docker OS type for {}", strategy.getDescription()); - String osType = info.getOsType(); + String osType = strategy.getInfo().getOsType(); if (StringUtils.isBlank(osType)) { log.warn("Could not determine Docker OS type"); } else if (!osType.equals("linux")) { diff --git a/core/src/main/java/org/testcontainers/utility/RegistryAuthLocator.java b/core/src/main/java/org/testcontainers/utility/RegistryAuthLocator.java index d88bdccd76a..e487bda686b 100644 --- a/core/src/main/java/org/testcontainers/utility/RegistryAuthLocator.java +++ b/core/src/main/java/org/testcontainers/utility/RegistryAuthLocator.java @@ -7,6 +7,7 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.SystemUtils; import org.slf4j.Logger; +import org.testcontainers.DockerClientFactory; import org.zeroturnaround.exec.InvalidResultException; import org.zeroturnaround.exec.ProcessExecutor; @@ -32,7 +33,7 @@ public class RegistryAuthLocator { private static final Logger log = getLogger(RegistryAuthLocator.class); - private static final String DEFAULT_REGISTRY_NAME = "index.docker.io"; + private static final String DEFAULT_REGISTRY_NAME = "https://index.docker.io/v1/"; private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); private static RegistryAuthLocator instance; @@ -282,7 +283,14 @@ private String getCredentialProgramName(String credHelper) { } private String effectiveRegistryName(DockerImageName dockerImageName) { - return StringUtils.defaultIfEmpty(dockerImageName.getRegistry(), DEFAULT_REGISTRY_NAME); + final String registry = dockerImageName.getRegistry(); + if (!StringUtils.isEmpty(registry)) { + return registry; + } + return StringUtils.defaultString( + DockerClientFactory.instance().getInfo().getIndexServerAddress(), + DEFAULT_REGISTRY_NAME + ); } private String getGenericCredentialsNotFoundMsg(String credentialHelperName) {