.labels(labels) .healthcheck(healthcheck) .build();
final ContainerConfig containerConfig = containerConfigBuilder.build();
final ContainerConfig containerConfig = builder.build();
private ContainerConfig buildContainerConfig() { // Bind ports String[] ports = {String.valueOf(params.getPort())}; Map<String, List<PortBinding>> portBindings = new HashMap<>(); for (String port : ports) { List<PortBinding> hostPorts = new ArrayList<>(); hostPorts.add(PortBinding.of(ALL_NETWORK_INTERFACES, port)); portBindings.put(port, hostPorts); } HostConfig hostConfig = HostConfig.builder() .privileged(true) .portBindings(portBindings) .build(); // Compose command line for starting Corfu String cmdLine = new StringBuilder() .append("mkdir -p " + params.getStreamLogDir()) .append(" && ") .append("java -cp *.jar org.corfudb.infrastructure.CorfuServer ") .append(getCommandLineParams()) .toString(); return ContainerConfig.builder() .hostConfig(hostConfig) .image(IMAGE_NAME) .hostname(params.getName()) .exposedPorts(ports) .cmd("sh", "-c", cmdLine) .build(); }
/** * Create docker container configuration for a job. * @param imageInfo The ImageInfo object. * @param properties Properties to resolve against. * @return The ContainerConfig object. */ public ContainerConfig containerConfig(final ImageInfo imageInfo, final Map<String, String> properties) { final ContainerConfig.Builder builder = ContainerConfig.builder(); builder.image(job.getImage()); builder.hostname(job.getHostname()); builder.cmd(containerCmdStrings(properties)); builder.hostname(containerHostname(properties)); builder.env(containerEnvStrings()); builder.exposedPorts(containerExposedPorts()); builder.volumes(volumes()); for (final ContainerDecorator decorator : containerDecorators) { decorator.decorateContainerConfig(job, imageInfo, builder); } return builder.build(); }
protected ContainerConfig createContainerConfig(String imageName, String[] ports, String cmd) { Map<String, List<PortBinding>> portBindings = new HashMap<>(); for (String port : ports) { List<PortBinding> hostPorts = Collections.singletonList(PortBinding.randomPort("0.0.0.0")); portBindings.put(port, hostPorts); } HostConfig hostConfig = HostConfig.builder() .portBindings(portBindings) .build(); ContainerConfig.Builder configBuilder = ContainerConfig.builder() .hostConfig(hostConfig) .image(imageName) .networkDisabled(false) .exposedPorts(ports); if (cmd != null) { configBuilder = configBuilder.cmd(cmd); } return configBuilder.build(); }
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(); } } }
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())); }
private ContainerConfig configureContainer(DockerTask task) throws Exception { Builder container = ContainerConfig.builder().image(task.getImage()); com.spotify.docker.client.messages.HostConfig.Builder hostConfig = HostConfig.builder(); configureTargetExecutable(task, container); configureVariables(task, container); configureVolumes(task, hostConfig); configurePorts(task, container); configureNetwork(task, container, hostConfig); // Set host config container.hostConfig(hostConfig.build()); final ContainerConfig containerConfig = container.build(); return containerConfig; }
@Override protected ContainerConfig getContainerConfig() { String timeZone = System.getProperty("user.timezone"); if(timeZone == null || timeZone.isEmpty()) { timeZone = "Etc/UTC"; } return ContainerConfig.builder() .image(getDockerImageName()) .exposedPorts("4444", "5900") .env("TZ=" + timeZone) .cmd("/opt/bin/entry_point.sh") .build(); }
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; }
private ContainerCreation createContainer() throws DockerException, InterruptedException { ContainerConfig containerConfig = ContainerConfig.builder() .image(imageName) .hostConfig(hostConfig) .cmd(commands) .env(env) .exposedPorts(usedContainerPorts) .build(); return dockerClient.createContainer(containerConfig, containerName); }
@Override protected ContainerConfig getContainerConfig() { String timeZone = Optional.of(System.getProperty("user.timezone")).orElse("Etc/UTC"); return ContainerConfig.builder() .image(getDockerImageName()) .exposedPorts("4444", "5900") .env("TZ=" + timeZone) .cmd("/opt/bin/entry_point.sh") .build(); }
/** * Construct a container. * * @param config * docker container configuration */ public Container(final DockerConfig config) { this.name = config.getName(); this.config = config; this.containerConfig = createContainerConfig(config).build(); }
.exposedPorts(ImmutableSet.of(expose)) .hostConfig(hostConfig) .build(); final ContainerCreation creation = docker.createContainer(config, testTag + "_syslog"); final String syslogContainerId = creation.id();
.exposedPorts(ImmutableSet.of("4711/tcp")) .hostConfig(hostConfig) .build(); final ContainerCreation creation = docker.createContainer(config, testTag + "-probe"); final String containerId = creation.id();
@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 + "'"); } } }
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(); }
/** * Create docker container configuration for a job. * * @param imageInfo The ImageInfo object. * * @return The ContainerConfig object. */ public ContainerConfig containerConfig(final ImageInfo imageInfo, final Optional<String> dockerVersion) { final ContainerConfig.Builder builder = ContainerConfig.builder(); builder.image(job.getImage()); builder.cmd(job.getCommand()); builder.hostname(job.getHostname()); builder.env(containerEnvStrings()); builder.exposedPorts(containerExposedPorts()); builder.volumes(volumes().keySet()); builder.labels(job.getLabels()); for (final ContainerDecorator decorator : containerDecorators) { decorator.decorateContainerConfig(job, imageInfo, dockerVersion, builder); } return builder.build(); }
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); } }