public void executeCommand(String containerId, String[] command, boolean waitForExecution) { final ExecCreation execCreation; try { execCreation = dockerClient.execCreate(containerId, command, DockerClient.ExecCreateParam.attachStdout(), DockerClient.ExecCreateParam.attachStderr(), DockerClient.ExecCreateParam.attachStdin()); final LogStream output = dockerClient.execStart(execCreation.id()); logger.debug(String.format("%s %s", nodeId, Arrays.toString(command))); if (waitForExecution) { try { String commandOutput = output.readFully(); logger.debug(String.format("%s %s", nodeId, commandOutput)); } catch (Exception e) { logger.debug(nodeId + " Error while executing the output.readFully()", e); ga.trackException(e); } } } catch (DockerException | InterruptedException | NullPointerException e) { logger.debug(nodeId + " Error while executing the command", e); ga.trackException(e); } }
containerId, cmd, DockerClient.ExecCreateParam.attachStdout(), DockerClient.ExecCreateParam.attachStderr()); final String execId = execCreation.id();
/** * Run `docker exec` on a container */ public void execCommand(String containerName, String... command) throws DockerException, InterruptedException { log.info("Executing docker command: {}", String.join(" ", command)); ExecCreation execCreation = docker.execCreate( containerName, command, DockerClient.ExecCreateParam.attachStdout(), DockerClient.ExecCreateParam.attachStderr() ); docker.execStart(execCreation.id()); }
, DockerClient.ExecCreateParam.attachStderr(true) );
, DockerClient.ExecCreateParam.attachStderr(true) );
public String execCommandInContainer(String containerId, String... command) throws DockerException, InterruptedException { String[] shCommand = { "sh", "-c" }; String[] finalCommand = (String[]) ArrayUtils.addAll(shCommand, command); String commandStr = Arrays.toString(finalCommand); log.trace("Running command {} in container {}", commandStr, containerId); String execId = dockerClient.execCreate(containerId, finalCommand, DockerClient.ExecCreateParam.attachStdout(), DockerClient.ExecCreateParam.attachStderr()).id(); String output = null; try (LogStream stream = dockerClient.execStart(execId)) { output = stream.readFully(); } log.trace("Result of command {} in container {}: {}", commandStr, containerId, output); return output; }
/** * Attach standard error. * * @return ExecCreateParam */ public static ExecCreateParam attachStderr() { return attachStderr(true); }
/** * Attach standard error. * * @return ExecCreateParam */ public static ExecCreateParam attachStderr() { return attachStderr(true); }