Best Testcontainers-java code snippet using org.testcontainers.DockerClientFactory.getDockerClient
Source:DockerClientFactory.java  
...64    }65    public static DockerClient lazyClient() {66        return new DockerClientDelegate() {67            @Override68            protected DockerClient getDockerClient() {69                return instance().client();70            }71            @Override72            public String toString() {73                return "LazyDockerClient";74            }75        };76    }77    /**78     * Obtain an instance of the DockerClientFactory.79     *80     * @return the singleton instance of DockerClientFactory81     */82    public synchronized static DockerClientFactory instance() {83        if (instance == null) {84            instance = new DockerClientFactory();85        }86        return instance;87    }88    /**89     * Checks whether Docker is accessible and {@link #client()} is able to produce a client.90     * @return true if Docker is available, false if not.91     */92    public synchronized boolean isDockerAvailable() {93        try {94            client();95            return true;96        } catch (IllegalStateException ex) {97            return false;98        }99    }100    @Synchronized101    private DockerClientProviderStrategy getOrInitializeStrategy() {102        if (strategy != null) {103            return strategy;104        }105        List<DockerClientProviderStrategy> configurationStrategies = new ArrayList<>();106        ServiceLoader.load(DockerClientProviderStrategy.class).forEach(configurationStrategies::add);107        strategy = DockerClientProviderStrategy.getFirstValidStrategy(configurationStrategies);108        return strategy;109    }110    @UnstableAPI111    public TransportConfig getTransportConfig() {112        return getOrInitializeStrategy().getTransportConfig();113    }114    @UnstableAPI115    public String getRemoteDockerUnixSocketPath() {116        String dockerSocketOverride = System.getenv("TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE");117        if (!StringUtils.isBlank(dockerSocketOverride)) {118            return dockerSocketOverride;119        }120        URI dockerHost = getTransportConfig().getDockerHost();121        String path = "unix".equals(dockerHost.getScheme())122            ? dockerHost.getRawPath()123            : "/var/run/docker.sock";124        return SystemUtils.IS_OS_WINDOWS125               ? "/" + path126               : path;127    }128    /**129     *130     * @return a new initialized Docker client131     */132    @Synchronized133    public DockerClient client() {134        if (dockerClient != null) {135            return dockerClient;136        }137        // fail-fast if checks have failed previously138        if (cachedClientFailure != null) {139            log.debug("There is a cached checks failure - throwing", cachedClientFailure);140            throw cachedClientFailure;141        }142        final DockerClientProviderStrategy strategy = getOrInitializeStrategy();143        log.info("Docker host IP address is {}", strategy.getDockerHostIpAddress());144        final DockerClient client = new DockerClientDelegate() {145            @Getter146            final DockerClient dockerClient = strategy.getDockerClient();147            @Override148            public void close() {149                throw new IllegalStateException("You should never close the global DockerClient!");150            }151        };152        Info dockerInfo = client.infoCmd().exec();153        Version version = client.versionCmd().exec();154        activeApiVersion = version.getApiVersion();155        activeExecutionDriver = dockerInfo.getExecutionDriver();156        log.info("Connected to docker: \n" +157                "  Server Version: " + dockerInfo.getServerVersion() + "\n" +158                "  API Version: " + activeApiVersion + "\n" +159                "  Operating System: " + dockerInfo.getOperatingSystem() + "\n" +160                "  Total Memory: " + dockerInfo.getMemTotal() / (1024 * 1024) + " MB");161        final String ryukContainerId;162        boolean useRyuk = !Boolean.parseBoolean(System.getenv("TESTCONTAINERS_RYUK_DISABLED"));163        if (useRyuk) {164            log.debug("Ryuk is enabled");165            try {166                //noinspection deprecation167                ryukContainerId = ResourceReaper.start(client);168            } catch (RuntimeException e) {169                cachedClientFailure = e;170                throw e;171            }172            log.info("Ryuk started - will monitor and terminate Testcontainers containers on JVM exit");173        } else {174            log.debug("Ryuk is disabled");175            ryukContainerId = null;176        }177        boolean checksEnabled = !TestcontainersConfiguration.getInstance().isDisableChecks();178        if (checksEnabled) {179            log.debug("Checks are enabled");180            try {181                log.info("Checking the system...");182                checkDockerVersion(version.getVersion());183                if (ryukContainerId != null) {184                    checkDiskSpace(client, ryukContainerId);185                } else {186                    runInsideDocker(187                        client,188                        createContainerCmd -> {189                            createContainerCmd.withName("testcontainers-checks-" + SESSION_ID);190                            createContainerCmd.getHostConfig().withAutoRemove(true);191                            createContainerCmd.withCmd("tail", "-f", "/dev/null");192                        },193                        (__, containerId) -> {194                            checkDiskSpace(client, containerId);195                            return "";196                        }197                    );198                }199            } catch (RuntimeException e) {200                cachedClientFailure = e;201                throw e;202            }203        } else {204            log.debug("Checks are disabled");205        }206        dockerClient = client;207        return dockerClient;208    }209    private void checkDockerVersion(String dockerVersion) {210        boolean versionIsSufficient = new ComparableVersion(dockerVersion).compareTo(new ComparableVersion("1.6.0")) >= 0;211        check("Docker server version should be at least 1.6.0", versionIsSufficient);212    }213    private void checkDiskSpace(DockerClient dockerClient, String id) {214        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();215        try {216            dockerClient217                    .execStartCmd(dockerClient.execCreateCmd(id).withAttachStdout(true).withCmd("df", "-P").exec().getId())218                    .exec(new ResultCallback.Adapter<Frame>() {219                        @Override220                        public void onNext(Frame frame) {221                            if (frame == null) {222                                return;223                            }224                            switch (frame.getStreamType()) {225                                case RAW:226                                case STDOUT:227                                    try {228                                        outputStream.write(frame.getPayload());229                                        outputStream.flush();230                                    } catch (IOException e) {231                                        onError(e);232                                    }233                            }234                        }235                    })236                    .awaitCompletion();237        } catch (Exception e) {238            log.debug("Can't exec disk checking command", e);239        }240        DiskSpaceUsage df = parseAvailableDiskSpace(outputStream.toString());241        check(242                "Docker environment should have more than 2GB free disk space",243                df.availableMB.map(it -> it >= 2048).orElse(true)244        );245    }246    private void check(String message, boolean isSuccessful) {247        if (isSuccessful) {248            log.info("\u2714\ufe0e {}", message);249        } else {250            log.error("\u274c {}", message);251            throw new IllegalStateException("Check failed: " + message);252        }253    }254    private boolean checkMountableFile() {255        DockerClient dockerClient = client();256        MountableFile mountableFile = MountableFile.forClasspathResource(ResourceReaper.class.getName().replace(".", "/") + ".class");257        Volume volume = new Volume("/dummy");258        try {259            return runInsideDocker(260                createContainerCmd -> createContainerCmd.withBinds(new Bind(mountableFile.getResolvedPath(), volume, AccessMode.ro)),261                (__, containerId) -> {262                    try (InputStream stream = dockerClient.copyArchiveFromContainerCmd(containerId, volume.getPath()).exec()) {263                        stream.read();264                        return true;265                    } catch (Exception e) {266                        return false;267                    }268                }269            );270        } catch (Exception e) {271            log.debug("Failure while checking for mountable file support", e);272            return false;273        }274    }275    /**276   * Check whether the image is available locally and pull it otherwise277   */278    @SneakyThrows279    public void checkAndPullImage(DockerClient client, String image) {280        try {281            client.inspectImageCmd(image).exec();282        } catch (NotFoundException notFoundException) {283            PullImageCmd pullImageCmd = client.pullImageCmd(image);284            try {285                pullImageCmd.exec(new TimeLimitedLoggedPullImageResultCallback(log)).awaitCompletion();286            } catch (DockerClientException e) {287                // Try to fallback to x86288                pullImageCmd289                    .withPlatform("linux/amd64")290                    .exec(new TimeLimitedLoggedPullImageResultCallback(log))291                    .awaitCompletion();292            }293        }294    }295    /**296     * @return the IP address of the host running Docker297     */298    public String dockerHostIpAddress() {299        return getOrInitializeStrategy().getDockerHostIpAddress();300    }301    public <T> T runInsideDocker(Consumer<CreateContainerCmd> createContainerCmdConsumer, BiFunction<DockerClient, String, T> block) {302        // We can't use client() here because it might create an infinite loop303        return runInsideDocker(getOrInitializeStrategy().getDockerClient(), createContainerCmdConsumer, block);304    }305    private <T> T runInsideDocker(DockerClient client, Consumer<CreateContainerCmd> createContainerCmdConsumer, BiFunction<DockerClient, String, T> block) {306        final String tinyImage = ImageNameSubstitutor.instance().apply(TINY_IMAGE).asCanonicalNameString();307        checkAndPullImage(client, tinyImage);308        CreateContainerCmd createContainerCmd = client.createContainerCmd(tinyImage)309                .withLabels(DEFAULT_LABELS);310        createContainerCmdConsumer.accept(createContainerCmd);311        String id = createContainerCmd.exec().getId();312        try {313            client.startContainerCmd(id).exec();314            return block.apply(client, id);315        } finally {316            try {317                client.removeContainerCmd(id).withRemoveVolumes(true).withForce(true).exec();...Source:TarantoolContainerImageHelper.java  
...39     *40     * @param imageParams parameters for building tarantool image41     */42    private static void buildImage(TarantoolImageParams imageParams) {43        final BuildImageCmd buildImageCmd = getDockerClient().buildImageCmd(imageParams.getDockerfile());44        final Map<String, String> buildArgs = imageParams.getBuildArgs();45        for (Map.Entry<String, String> entry : buildArgs.entrySet()) {46            buildImageCmd.withBuildArg(entry.getKey(), entry.getValue());47        }48        buildImageCmd.withTags(new HashSet<>(Collections.singletonList(imageParams.getTag())))49                .exec(new BuildImageResultCallback())50                .awaitImageId();51    }52    /**53     * Checks image for existing by name54     *55     * @param tag image tag for searching56     * @return true if image exist and false if not57     */58    private static boolean hasImage(String tag) {59        final List<Image> images = getDockerClient().listImagesCmd().exec();60        return images.stream()61                .map(Image::getRepoTags)62                .map(Arrays::asList)63                .flatMap(Collection::stream)64                .anyMatch(repoTag -> repoTag.equals(tag));65    }66    private static DockerClient getDockerClient() {67        return DockerClientFactory.instance().client();68    }69}...getDockerClient
Using AI Code Generation
1import org.testcontainers.DockerClientFactory;2import com.github.dockerjava.api.DockerClient;3import com.github.dockerjava.api.command.InspectContainerResponse;4import com.github.dockerjava.api.model.Container;5import com.github.dockerjava.api.model.ContainerNetwork;6import com.github.dockerjava.api.model.ContainerNetwork.Ipam;7import com.github.dockerjava.api.model.ContainerNetwork.Ipam.Config;8import com.github.dockerjava.api.model.ContainerNetwork.Ipam.Config.Subnet;9import com.github.dockerjava.api.model.ContainerNetworkSettings;10import com.github.dockerjava.api.model.ContainerNetworkSettings.NetworkSettings;11import com.github.dockerjava.api.model.ContainerNetworkSettings.NetworkSettings.Network;12import com.github.dockerjava.api.model.ContainerNetworks;13import com.github.dockerjava.api.model.ContainerPort;14import com.github.dockerjava.api.model.ContainerState;15import com.github.dockerjava.api.model.ContainerState.Health;16import com.github.dockerjava.api.model.ContainerState.Running;17import com.github.dockerjava.api.model.ContainerState.StartedAt;18import com.github.dockerjava.api.model.ContainerState.Status;19import com.github.dockerjava.api.model.ContainerState.StoppedAt;20import com.github.dockerjava.api.model.ContainerStateFinished;21import com.github.dockerjava.api.model.ContainerStatePaused;22import com.github.dockerjava.api.model.ContainerStateRestarting;23import com.github.dockerjava.api.model.ContainerStateRunning;24import com.github.dockerjava.api.model.ContainerStateStarting;25import com.github.dockerjava.api.model.ContainerStateStopped;26import com.github.dockerjava.api.model.ContainerStateUp;27import com.github.dockerjava.api.model.ContainerStateWaiting;28import com.github.dockerjava.api.model.ContainerStats;29import com.github.dockerjava.api.model.ExposedPort;30import com.github.dockerjava.api.model.ExposedPorts;31import com.github.dockerjava.api.model.HostConfig;32import com.github.dockerjava.api.model.Info;33import com.github.dockerjava.api.model.InternetProtocol;34import com.github.dockerjava.api.model.Link;35import com.github.dockerjava.api.model.Link.LinkAlias;36import com.github.dockerjava.api.model.Link.LinkName;37import com.github.dockerjava.api.model.Link.LinkPath;38import com.github.dockerjava.api.model.Link.LinkTarget;39import com.github.dockerjava.api.model.Network;40import com.github.dockerjava.api.model.Network.IpamConfig;41import com.github.dockerjava.api.model.Network.IpamConfig.IpRange;42import com.github.dockerjava.api.model.Network.IpamConfig.Labels;43import com.github.dockerjava.api.model.Network.IpamConfig.Subnet;44import com.github.dockergetDockerClient
Using AI Code Generation
1import org.testcontainers.DockerClientFactory;2import com.github.dockerjava.api.DockerClient;3import com.github.dockerjava.api.command.InspectContainerResponse;4import com.github.dockerjava.api.model.Container;5import com.github.dockerjava.api.model.ContainerNetwork;6import com.github.dockerjava.api.model.ContainerNetwork.Ipam;7import com.github.dockerjava.api.model.ContainerNetwork.Ipam.Config;8import com.github.dockerjava.api.model.Network;9import com.github.dockerjava.api.model.Network.Ipam.Config2;10import com.github.dockerjava.api.model.Network.Ipam.Config2.Subnet;11import com.github.dockerjava.api.model.Ports;12import com.github.dockerjava.api.model.Ports.Binding;13import com.github.dockerjava.api.model.Ports.Binding.BindPort;14import com.github.dockerjava.api.model.Ports.PortBinding;15import com.github.dockerjava.core.command.InspectContainerResponseImpl;16import com.github.dockerjava.core.command.InspectImageResponseImpl;17import com.github.dockerjava.core.command.InspectNetworkResponseImpl;18import com.github.dockerjava.core.command.PullImageResultCallback;19import com.github.dockerjava.core.command.PushImageResultCallback;20import com.github.dockerjava.core.command.WaitContainerResultCallback;21import java.util.ArrayList;22import java.util.HashMap;23import java.util.List;24import java.util.Map;25import java.util.concurrent.TimeUnit;26import org.testcontainers.DockerClientFactory;27import org.testcontainers.containers.GenericContainer;28import org.testcontainers.containers.wait.strategy.Wait;29public class 1 {30    public static void main(String[] args) {31        DockerClient dockerClient = DockerClientFactory.instance().client();32        InspectContainerResponseImpl inspectContainerResponseImpl = (InspectContainerResponseImpl) dockerClient.inspectContainerCmd("1").exec();33        InspectNetworkResponseImpl inspectNetworkResponseImpl = (InspectNetworkResponseImpl) dockerClient.inspectNetworkCmd("1").exec();34        InspectImageResponseImpl inspectImageResponseImpl = (InspectImageResponseImpl) dockerClient.inspectImageCmd("1").exec();35        PullImageResultCallback pullImageResultCallback = dockerClient.pullImageCmd("1").exec(new PullImageResultCallback());36        PushImageResultCallback pushImageResultCallback = dockerClient.pushImageCmd("1").exec(new PushImageResultCallback());37        WaitContainerResultCallback waitContainerResultCallback = dockerClient.waitContainerCmd("1").exec(new WaitContainerResultCallback());38        List<Container> list = dockerClient.listContainersCmd().exec();getDockerClient
Using AI Code Generation
1import org.testcontainers.DockerClientFactory;2import com.github.dockerjava.api.DockerClient;3import com.github.dockerjava.api.command.InspectContainerResponse;4import com.github.dockerjava.api.model.Container;5import com.github.dockerjava.api.model.ContainerNetwork;6import com.github.dockerjava.api.model.ExposedPort;7import com.github.dockerjava.api.model.Ports;8import com.github.dockerjava.api.model.Ports.Binding;9import com.github.dockerjava.core.DockerClientBuilder;10import com.github.dockerjava.core.DockerClientConfig;11import com.github.dockerjava.core.command.PullImageResultCallback;12import com.github.dockerjava.core.command.PushImageResultCallback;13import com.github.dockerjava.core.command.WaitContainerResultCallback;14import java.io.File;15import java.util.ArrayList;16import java.util.List;17public class 1 {18    public static void main(String[] args) throws Exception {19        DockerClient dockerClient = DockerClientFactory.instance().client();20        InspectContainerResponse containerResponse = dockerClient.inspectContainerCmd("b0b2d2c2a2f4").exec();21        ContainerNetwork containerNetwork = containerResponse.getNetworkSettings().getNetworks().get("bridge");22        String containerIp = containerNetwork.getIpAddress();23        int containerPort = containerResponse.getNetworkSettings().getPorts().getBindings().get(ExposedPort.tcp(8080))[0].getHostPortSpec();24        System.out.println("Container IP: " + containerIp + " Container Port: " + containerPort);25    }26}getDockerClient
Using AI Code Generation
1import org.testcontainers.DockerClientFactory;2import com.github.dockerjava.api.DockerClient;3DockerClient client = DockerClientFactory.instance().client();4import org.testcontainers.DockerClientFactory;5import com.github.dockerjava.api.DockerClient;6DockerClient client = DockerClientFactory.instance().client();7import org.testcontainers.DockerClientFactory;8import com.github.dockerjava.api.DockerClient;9DockerClient client = DockerClientFactory.instance().client();10import org.testcontainers.DockerClientFactory;11import com.github.dockerjava.api.DockerClient;12DockerClient client = DockerClientFactory.instance().client();13import org.testcontainers.DockerClientFactory;14import com.github.dockerjava.api.DockerClient;15DockerClient client = DockerClientFactory.instance().client();16import org.testcontainers.DockerClientFactory;17import com.github.dockerjava.api.DockerClient;18DockerClient client = DockerClientFactory.instance().client();19import org.testcontainers.DockerClientFactory;20import com.github.dockerjava.api.DockerClient;21DockerClient client = DockerClientFactory.instance().client();22import org.testcontainers.DockerClientFactory;23import com.github.dockerjava.api.DockerClient;24DockerClient client = DockerClientFactory.instance().client();25import org.testcontainers.DockerClientFactory;26import com.github.dockerjava.api.DockerClient;27DockerClient client = DockerClientFactory.instance().client();28import org.testcontainers.DockerClientFactory;29import com.github.dockerjava.api.DockerClient;30DockerClient client = DockerClientFactory.instance().client();getDockerClient
Using AI Code Generation
1import org.testcontainers.DockerClientFactory;2import com.github.dockerjava.api.DockerClient;3public class TestDockerClientFactory {4    public static void main(String[] args) {5        DockerClient dockerClient = DockerClientFactory.instance().getDockerClient();6        System.out.println(dockerClient);7    }8}9import org.testcontainers.DockerClientFactory;10import com.github.dockerjava.api.DockerClient;11public class TestDockerClientFactory {12    public static void main(String[] args) {13        String dockerHostIpAddress = DockerClientFactory.instance().getDockerHostIpAddress();14        System.out.println(dockerHostIpAddress);15    }16}getDockerClient
Using AI Code Generation
1package org.testcontainers;2import com.github.dockerjava.api.DockerClient;3public class Path1 {4    public static void main(String[] args) {5        DockerClient dockerClient = DockerClientFactory.instance().client();6        System.out.println(dockerClient);7    }8}9package org.testcontainers;10import com.github.dockerjava.api.DockerClient;11public class Path2 {12    public static void main(String[] args) {13        DockerClient dockerClient = DockerClientFactory.instance().client();14        System.out.println(dockerClient);15    }16}17package org.testcontainers;18import com.github.dockerjava.api.DockerClient;19public class Path3 {20    public static void main(String[] args) {21        DockerClient dockerClient = DockerClientFactory.instance().client();22        System.out.println(dockerClient);23    }24}25package org.testcontainers;26import com.github.dockerjava.api.DockerClient;27public class Path4 {28    public static void main(String[] args) {29        DockerClient dockerClient = DockerClientFactory.instance().client();30        System.out.println(dockerClient);31    }32}33package org.testcontainers;34import com.github.dockerjava.api.DockerClient;35public class Path5 {36    public static void main(String[] args) {37        DockerClient dockerClient = DockerClientFactory.instance().client();38        System.out.println(dockerClient);39    }40}41package org.testcontainers;42import com.github.dockerjava.api.DockerClient;43public class Path6 {44    public static void main(String[] args) {45        DockerClient dockerClient = DockerClientFactory.instance().client();46        System.out.println(dockerClient);47    }48}49package org.testcontainers;50import com.github.dockerjava.api.DockerClient;getDockerClient
Using AI Code Generation
1import org.testcontainers.DockerClientFactory;2import com.github.dockerjava.api.DockerClient;3DockerClient dockerClient = DockerClientFactory.instance().client();4import org.testcontainers.DockerClientFactory;5import com.github.dockerjava.api.DockerClient;6DockerClient dockerClient = DockerClientFactory.instance().client();getDockerClient
Using AI Code Generation
1package org.testcontainers;2import java.io.IOException;3import com.github.dockerjava.api.DockerClient;4import com.github.dockerjava.core.DockerClientBuilder;5public class DockerClientFactoryTest {6    public static void main(String[] args) throws IOException {7        DockerClient dockerClient = DockerClientFactory.instance().client();8        System.out.println("Docker Client is: " + dockerClient);9    }10}11package org.testcontainers;12import java.io.IOException;13import com.github.dockerjava.api.DockerClient;14import com.github.dockerjava.core.DockerClientBuilder;15public class DockerClientFactoryTest {16    public static void main(String[] args) throws IOException {17        DockerClient dockerClient = DockerClientFactory.instance().client();18        System.out.println("Docker Client is: " + dockerClient);19    }20}21package org.testcontainers;22import java.io.IOException;23import com.github.dockerjava.api.DockerClient;24import com.github.dockerjava.core.DockerClientBuilder;25public class DockerClientFactoryTest {26    public static void main(String[] args) throws IOException {27        DockerClient dockerClient = DockerClientFactory.instance().client();28        System.out.println("Docker Client is: " + dockerClient);29    }30}getDockerClient
Using AI Code Generation
1import org.testcontainers.DockerClientFactory;2import com.github.dockerjava.api.DockerClient;3import com.github.dockerjava.api.command.InspectImageResponse;4public class DockerClientFactoryExample {5    public static void main(String[] args) {6        DockerClient dockerClient = DockerClientFactory.instance().client();7        InspectImageResponse imageResponse = dockerClient.inspectImageCmd("busybox").exec();8        System.out.println(imageResponse.getRepoTags()[0]);9    }10}Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
