2013-07-13 2 views
2

Java의 ProcessBuilder을 사용하여 도커 컨테이너에서 명령을 실행하려고합니다. 그러나 종료 코드를 기다릴 때 중단됩니다. 왜 그런가요?ProcessBuilder를 실행중인 도커가 멈춤 현상을 일으키는 이유는 무엇입니까?

ProcessBuilder processBuilder = new ProcessBuilder(Arrays.asList("/usr/bin/docker", "run", "base", "echo", "hello")); 

Process process = processBuilder.start(); 

// ... Spin off another thread to collect stdout and stderr 

int exitCode = process.waitFor(); // <-- HANG 

나는 프로세스가 표준 출력으로 올바른 결과를 뱉는 것을 볼 수 있습니다. 출구 코드를 반환하지 않습니다.

+0

가능한 한 가지 문제점 : 프로세스의 InputStream 및 ErrorStream을 먹어 치우는 것처럼 보이지 않습니다. 이러한 스트림에 사용할 수있는 버퍼를 초과 할 수 있습니다. 자세한 내용은 [Runtime.exec()이 실행되지 않을 때] (http://www.javaworld.com/jw-12-2000/jw-1229-traps.html)를 참조하십시오. 모두 중요하므로 모두 읽어보십시오. –

+0

@Hovercraft, 나는 그 (것)들을 중얼 거리기 위하여 다른 실을 시작한다. 도커를 사용하지 않고 echo hello 명령을 실행 한 코드를 테스트 해 보았습니다. –

+0

커맨드 라인에서'/ usr/bin/docker run base echo hello'를 실행하면 어떻게됩니까? 끝내나요? –

답변

2

API 주변 단지 래퍼 인 CLI를 사용할 수 있습니까? java에서 직접 사용하는 것이 더 좋습니다.

관련 문제