@Before public void setup() throws Exception { try (final DockerClient docker = getNewDockerClient()) { // Build an image with an ENTRYPOINT and CMD prespecified final String dockerDirectory = Resources.getResource("syslog-test-image").getPath(); docker.build(Paths.get(dockerDirectory), testImage); // Figure out the host IP from the container's point of view (needed for syslog) final ContainerConfig config = ContainerConfig.builder() .image(BUSYBOX) .cmd(asList("ip", "route", "show")) .build(); final ContainerCreation creation = docker.createContainer(config); final String containerId = creation.id(); docker.startContainer(containerId); // Wait for the container to exit. // If we don't wait, docker.logs() might return an epmty string because the container // cmd hasn't run yet. docker.waitContainer(containerId); final String log; try (LogStream logs = docker.logs(containerId, stdout(), stderr())) { log = logs.readFully(); } final Matcher m = DEFAULT_GATEWAY_PATTERN.matcher(log); if (m.find()) { syslogHost = m.group("gateway"); } else { fail("couldn't determine the host address from '" + log + "'"); } } }
final ContainerCreation container = dockerClient.createContainer(containerConfig, containerName); dockerClient.startContainer(container.id()); return new ContainerCreationStatus(true, containerName, container.id(), nodePort);
private void startContainer(final String name) throws DockerException, InterruptedException { docker.pull(BUSYBOX); final HostConfig hostConfig = HostConfig.builder().build(); final ContainerConfig config = ContainerConfig.builder() .image(BUSYBOX) .cmd(IDLE_COMMAND) .hostConfig(hostConfig) .build(); final ContainerCreation creation = docker.createContainer(config, name); final String containerId = creation.id(); docker.startContainer(containerId); } }
private String startContainer(final String image, final Optional<String> dockerVersion) throws InterruptedException, DockerException { // Get container image info final ImageInfo imageInfo = docker.inspectImage(image); if (imageInfo == null) { throw new HeliosRuntimeException("docker inspect image returned null on image " + image); } // Create container final HostConfig hostConfig = config.hostConfig(dockerVersion); final ContainerConfig containerConfig = config.containerConfig(imageInfo, dockerVersion) .toBuilder() .hostConfig(hostConfig) .build(); listener.creating(); final ContainerCreation container = docker.createContainer(containerConfig, containerName); log.info("created container: {}: {}, {}", config, container, containerConfig); listener.created(container.id()); // Start container log.info("starting container: {}: {} {}", config, container.id(), hostConfig); listener.starting(); docker.startContainer(container.id()); log.info("started container: {}: {}", config, container.id()); listener.started(); return container.id(); }
.hostConfig(hostConfig) .build(); final ContainerCreation creation = docker.createContainer(config, testTag + "-probe"); final String containerId = creation.id(); docker.startContainer(containerId);
.hostConfig(hostConfig) .build(); final ContainerCreation creation = docker.createContainer(config, testTag + "_syslog"); final String syslogContainerId = creation.id(); docker.startContainer(syslogContainerId);
private String createContainer() throws InterruptedException { final long startTime = System.currentTimeMillis(); // equivalent to "docker run" final ContainerCreation container; try { if (name == null) { container = client.createContainer(containerConfig); } else { container = client.createContainer(containerConfig, name); } return container.id(); } catch (final DockerException e) { throw new IllegalStateException("Unable to create container using " + containerConfig, e); } finally { final long elapsedMillis = System.currentTimeMillis() - startTime; LOGGER.info("Created container {} in {}ms", containerConfig.image(), elapsedMillis); } }
private void createImage() throws DockerException, InterruptedException { if (dockerHost.getName() == null) { containerId = dockerClient.createContainer(config).id(); } else { containerId = dockerClient.createContainer(config, dockerHost.getName()).id(); } }
public String runContainer(ContainerConfig.Builder containerConfigBuilder, String containerName) throws DockerException { try { final ContainerConfig containerConfig = containerConfigBuilder.build(); final ContainerCreation creation; creation = dockerClient.createContainer(containerConfig, containerName); final String id = creation.id(); dockerClient.startContainer(id); return id; } catch (InterruptedException e) { logger.error("", e); } return null; }
DockerRule(DockerRuleParams params) { this.params = params; dockerClient = createDockerClient(); ContainerConfig containerConfig = createContainerConfig(params.imageName, params.ports, params.cmd); try { if (!params.isLocalImage) { dockerClient.pull(params.imageName); } container = dockerClient.createContainer(containerConfig); } catch (DockerException | InterruptedException e) { throw new IllegalStateException(e); } }
private ContainerCreation createContainer() { LOG.debug("Creating Docker container '{}'", containerName); final Map<String, List<PortBinding>> portBindings = new HashMap<>(); for (int dockerPort : ports.keySet()) { List<PortBinding> hostPorts = new ArrayList<>(); hostPorts.add(PortBinding.of("0.0.0.0", ports.get(dockerPort))); portBindings.put(dockerPort + "/tcp", hostPorts); } HostConfig hostConfig = HostConfig.builder() .portBindings(portBindings) .build(); // Create container ContainerConfig config = ContainerConfig.builder() .image(imageName) .hostConfig(hostConfig) .build(); try { ContainerCreation container = dockerClient.createContainer(config, containerName); LOG.debug("Docker container '{}' created", containerName); return container; } catch (DockerException | InterruptedException e) { throw new EnvironmentBuilderException("Unable to create Docker container. Is one already running with the same name?", e); } }
private ContainerCreation createContainer(DockerClient docker) { LOG.debug("Creating Couchbase Docker container '{}'", CONTAINER_NAME); // Bind container ports to host ports final String[] ports = {"8091", "8092", "8093", "8094", "11207", "11210", "11211"}; final Map<String, List<PortBinding>> portBindings = new HashMap<>(); for (String port : ports) { List<PortBinding> hostPorts = new ArrayList<>(); hostPorts.add(PortBinding.of("0.0.0.0", port)); portBindings.put(port + "/tcp", hostPorts); } HostConfig hostConfig = HostConfig.builder() .portBindings(portBindings) .build(); // Create container ContainerConfig config = ContainerConfig.builder() .image(COUCHBASE_LATEST_IMAGE_NAME) .hostConfig(hostConfig) .build(); try { ContainerCreation container = docker.createContainer(config, CONTAINER_NAME); LOG.debug("Couchbase Docker container '{}' created", CONTAINER_NAME); return container; } catch (DockerException | InterruptedException e) { throw new EnvironmentBuilderException("Unable to create Couchbase Docker container. Is one already running with the same name?", e); } }
String containerId = dockerClient.createContainer(createContainer).id(); dockerClient.startContainer(containerId);
public static void main(String[] args) throws DockerException, InterruptedException { System.out.println("Testing"); // Create a client based on DOCKER_HOST and DOCKER_CERT_PATH env vars try { final DockerClient docker = DefaultDockerClient.builder() .uri("http://192.168.99.100:2375") .build(); //Create a container ContainerConfig cc = ContainerConfig.builder() .image("nginx") .build(); final ContainerCreation container = docker.createContainer(cc); docker.startContainer(container.id()); } catch (Exception ex) { ex.printStackTrace(); } } }
container = docker.createContainer(cc); outputStream.write(container.id().getBytes()); } catch (DockerException e) {
@Override public void start(WorkflowInstance workflowInstance, RunSpec runSpec) { final String imageTag = runSpec.imageName().contains(":") ? runSpec.imageName() : runSpec.imageName() + ":latest"; final ContainerCreation creation; try { boolean found = false; for (Image image : client.listImages()) { found |= image.repoTags().contains(imageTag); } if (!found) { client.pull(imageTag, System.out::println); // blocking } final ContainerConfig containerConfig = ContainerConfig.builder() .image(imageTag) .cmd(runSpec.args()) .build(); creation = client.createContainer(containerConfig, runSpec.executionId()); client.startContainer(creation.id()); } catch (DockerException | InterruptedException e) { throw new RuntimeException(e); } inFlight.put(creation.id(), workflowInstance); LOG.info("Started container with id " + creation.id() + " and name " + runSpec.executionId()); }
private String startContainer(final String image) throws InterruptedException, DockerException { // Get container image info final ImageInfo imageInfo = docker.inspectImage(image); if (imageInfo == null) { throw new HeliosRuntimeException("docker inspect image returned null on image " + image); } // Create container final HostConfig hostConfig = config.hostConfig(); final ContainerConfig containerConfig = config.containerConfig(imageInfo) .toBuilder() .hostConfig(hostConfig) .build(); listener.creating(); final ContainerCreation container = docker.createContainer(containerConfig, containerName); log.info("created container: {}: {}, {}", config, container, containerConfig); listener.created(container.id()); // Start container log.info("starting container: {}: {} {}", config, container.id(), hostConfig); listener.starting(); docker.startContainer(container.id()); log.info("started container: {}: {}", config, container.id()); listener.started(); return container.id(); }
public static FakeS3 create(DockerClient dockerClient) throws DockerException, InterruptedException, IOException { // make sure we have the image dockerClient.pull(IMAGE, System.err::println); Path directory = Files.createTempDirectory("fakeS3"); // bind a fakes3 image to a random host port int port = InstanceSpec.getRandomPort(); return new FakeS3(port, dockerClient.createContainer(ContainerConfig.builder() .hostConfig(HostConfig.builder().portBindings(ImmutableMap.of( CONTAINER_PORT, ImmutableList.of(PortBinding.of("0.0.0.0", port)) )).build()) .image(IMAGE) .exposedPorts(ImmutableSet.of(CONTAINER_PORT)) .build())); }
/** * Deploy and start docker container, expose ports, connect to a network * * @return docker container id */ private String deployContainer() { ContainerConfig containerConfig = buildContainerConfig(); String id; try { ContainerCreation container = docker.createContainer(containerConfig, params.getName()); id = container.id(); dockerManager.addShutdownHook(params.getName()); docker.disconnectFromNetwork(id, "bridge"); docker.connectToNetwork(id, docker.inspectNetwork(universeParams.getNetworkName()).id()); docker.startContainer(id); String ipAddr = docker.inspectContainer(id) .networkSettings().networks() .values().asList().get(0) .ipAddress(); if (StringUtils.isEmpty(ipAddr)) { throw new NodeException("Empty Ip address for container: " + params.getName()); } ipAddress.set(ipAddr); } catch (InterruptedException | DockerException e) { throw new NodeException("Can't start a container", e); } return id; }
.build(); final ContainerCreation container = docker.createContainer(cc);