2017-01-27 2 views
3

Docker 컨테이너 내에서 실행되는 Java 프로그램이 있습니다. 이 프로그램은 호스트 시스템에 의해 실행되어야하는 셸 명령을 실행해야하지만, 단지 Runtime.getRuntime().exec(...)을 호출하면 Docker 컨테이너 내부에서 실행됩니다.Docker 프로세스 내부의 Runtime.getRuntime(). exec

프로세스가 외부에서 실행되도록 컨테이너 내부에서 프로세스를 시작할 수있는 방법이 있습니까? Docker를 통해 exec 명령을 실행하여 명령 자체가 호스트에서 실행되어야한다고 말하면서 의심 스럽지만 그렇게하는 방법을 모르겠습니다.

+1

I에서 수행 될 수 있도록 이것이 가능한지 확실하지 않습니다. 도커의 핵심은 서로에게서 서비스를 격리하는 것입니다. 도커 포드 (docker pod)는 명시 적으로 전달 된 리소스 외부에서 슈퍼의 컨텍스트가 없어야합니다 (잘못된 것일 수 있음). –

+0

Matt와 동의합니다. 사실 컨테이너 내부에서 실행되는 프로세스는 실제로 다른 uid를 사용하는 호스트 시스템에서 실행됩니다. 컨테이너의 포트를 공개하고 호스트에 매핑하여 목표를 달성 할 수있을 것입니다. – GauravJ

+0

당신이 우리가 원하는 것을 설명하면, 우리는 당신이 다른 방법을 찾을 수 있도록 도와 줄 것입니다. –

답변

0

도커 코만도 클라이언트가 도커 서비스와 통신하는 방법을 기반으로 할 수 있습니다. Unix 소켓 (즉, 파일)을 사용하여 서비스에 명령을 스트리밍하는 클라이언트 일뿐입니다. 따라서 1) tcp (docker TCP 소켓을위한 google)를 통해 호스트 컴퓨터의 서비스를 연결할 수 있습니다. 2) docker 유틸리티를 사용하여 도커 호스트 컴퓨터의 볼륨을 만들어 도커 컨테이너에서 사용할 수있게 만들 수 있습니다. 우분투에서 실행되는 도커 매개 변수처럼

-v /var/run/docker.sock:/var/run/docker.sock -v/usr/bin/docker :/usr/bin/docker -v/usr/lib/x86_64-linux-gnu/libltdl.so.7 : /usr/lib/x86_64-linux-gnu/libltdl.so.7

당신이 용기에 고정 표시기 유틸리티를 exectude 가능하고 실제로 모든 명령이 호스트 서비스

관련 문제