.exposedPorts(exposedPorts) .env(env) .cmd(cmd) .entrypoint(entrypoint) .onBuild(onBuild)
containerConfigBuilder.cmd(imageConfig.cmd());
@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 + "'"); } } }
"POSTGRES_PASSWORD=" + this.configuration.password); if (this.configuration.maxConnections > 0) { builder = builder.cmd("postgres", "-N", String.valueOf(this.configuration.maxConnections));
if (cmd.isPresent()) { log.trace("Using cmd: {}", cmd.get()); containerConfigBuilder.cmd(cmd.get());
.exposedPorts(exposedPorts) .env(env) .cmd(cmd) .entrypoint(entrypoint) .onBuild(onBuild)
private void buildImageConfig() { final ContainerConfig.Builder configBuilder = ContainerConfig.builder().image(dockerHost.getImage()); if (dockerHost.getCommand() != null) { configBuilder.cmd(dockerHost.getCommand()); } if (dockerHost.getEnv() != null) { configBuilder.env(dockerHost.getEnv()); } if (dockerHost.getExposedPorts() != null) { configBuilder.exposedPorts(dockerHost.getExposedPorts()); } if (dockerHost.isTty()) { configBuilder.tty(true); } final HostConfig.Builder hostConfigBuilder = HostConfig.builder() .publishAllPorts(dockerHost.isExposeAllPorts()) .links(dockerHost.getLinks()); if (dockerHost.hasPortBindings()) { final Map<String, List<PortBinding>> portBindings = new HashMap<>(); for (String binding : dockerHost.getPortBindings()) { final String[] bindings = binding.split(":"); final String containerPort = bindings[1]; final PortBinding hostBinding = PortBinding.of("0.0.0.0", bindings[0]); portBindings.put(containerPort, Collections.singletonList(hostBinding)); } hostConfigBuilder.portBindings(portBindings); } configBuilder.hostConfig(hostConfigBuilder.build()); config = configBuilder.build(); }
@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 void configureTargetExecutable(DockerTask task, Builder container) { // If we got a script property, ignore everything else and use this if (task.getScript() != null) { container.entrypoint("/bin/sh"); // TODO : Check if the container has /bin/sh executable // For every script line, create a monster script to pass to our shell StringBuilder arguments = new StringBuilder(); if (task.isScriptStrict()) { Arrays.asList(task.getScript()).stream().forEach(line -> arguments.append(line).append("&&")); // Remove the last && because it doesn't compile in BASH arguments.setLength(arguments.length() - 2); } else { Arrays.asList(task.getScript()).stream().forEach(line -> arguments.append(line).append(";")); } container.cmd("-c", arguments.toString()); } else { if (task.getEntrypoint() == null) { } container.entrypoint(task.getEntrypoint()); if (task.getArguments() != null) { container.cmd(task.getArguments()); } } }
/** * 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(); }
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(); }
@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(); }
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(); }
final ContainerConfig config = ContainerConfig.builder() .cmd(asList("nc", "-p", port, "-l", "-u")) .exposedPorts(ImmutableSet.of(expose)) .hostConfig(hostConfig)
final ContainerConfig config = ContainerConfig.builder() .image(BUSYBOX) .cmd("nc", "-p", "4711", "-lle", "cat") .exposedPorts(ImmutableSet.of("4711/tcp")) .hostConfig(hostConfig)
/** * 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); } }