public ContainerCreationStatus startDockerSeleniumContainer(final TimeZone timeZone, final Dimension screenSize) { TimeZone effectiveTimeZone = ObjectUtils.defaultIfNull(timeZone, DEFAULT_TZ); Dimension effectiveScreenSize = ObjectUtils.defaultIfNull(screenSize, DEFAULT_SCREEN_SIZE); NetworkUtils networkUtils = new NetworkUtils(); String hostIpAddress = networkUtils.getIp4NonLoopbackAddressOfThisMachine().getHostAddress(); String nodePolling = String.valueOf(RandomUtils.nextInt(90, 120) * 1000); String nodeRegisterCycle = String.valueOf(RandomUtils.nextInt(60, 90) * 1000); String seleniumNodeParams = getSeleniumNodeParameters(); String latestImage = getLatestDownloadedImage(getDockerSeleniumImageName()); int containerPort = LOWER_PORT_BOUNDARY; if (containerClient instanceof DockerContainerClient) { containerPort = findFreePortInRange(); } Map<String, String> envVars = buildEnvVars(effectiveTimeZone, effectiveScreenSize, hostIpAddress, sendAnonymousUsageInfo, nodePolling, nodeRegisterCycle, seleniumNodeParams, containerPort); return containerClient.createContainer(getContainerName(), latestImage, envVars, String.valueOf(containerPort)); }