2014-10-20 2 views
2

나는 용기 내부에이 명령을 실행하려면 : java -jar bin/felix.jar > log.txtdocker run 명령에서 명령 줄 인수를 관리하는 방법은 무엇입니까?

을 내가 수동으로 할 경우

[email protected]:~/path$ sudo docker run -d 5fe6598e0648 "java -jar bin/felix.jar > log.txt" 

내가 얻을 :

[email protected]:~/path$ sudo docker run -it 5fe6598e0648 /bin/bash 
[email protected]:/path# java -jar bin/felix.jar > log.txt 
[... program running ...] 

모든 작품,하지만 난 그것을 실행하려고하면 다음 오류 :

857bb5fcdbd7a315517bc9031d65b26abcaaad1fac7a29574e39a0289d0d77a3 
2014/10/20 10:20:53 Error response from daemon: Cannot start container 857bb5fcdbd7a315517bc9031d65b26abcaaad1fac7a29574e39a0289d0d77a3: exec: "java -jar bin/felix.jar > log.txt": stat java -jar bin/felix.jar > log.txt: no such file or directory 

이중 쉼표 "" 대신 반전 된 쉼표 ''을 사용하려고하면 같은 오류가 발생합니다.

> log.txt 부분으로 인해 쉼표를 사용하고 싶습니다. 그렇지 않으면 호스트 시스템에서 실행중인 터미널에서 해석합니다.

This answer/bin/bash-c 옵션을 사용하는 것이 좋습니다. 이 문제는 무시하고 작동하지만 Docker가이 문제를 해결할 수있는 해결책이 있습니까? docker run 명령으로 명령 줄 인수를 관리하는 방법은 무엇입니까?

+0

'java'에 대한 전체 경로를 제공하려 했습니까? – Rondo

+0

답변을 찾았습니까? – Robert

+0

@ Rob3 질문에서 말했듯이 이미 솔루션이 있지만 Docker에서 명령 줄 인수를 관리하는 "최상의"방법을 찾고있었습니다 –

답변

1

'>'이 (가) 로컬 env로 해석됩니다.

이 작동합니다 :

sudo docker run -d 5fe6598e0648 -c "java -jar bin/felix.jar > log.txt" 

기본 엔트리 포인트는/빈/SH - 당신은 -c 옵션을 가진 문자열로이에 인수를 전달할 수 있습니다.

Docker는 Dockerfile ENTRYPOINT의 기본값 인 --entrypoint inline을 소유하도록 CLI 옵션을 제공합니다. 이들 중 하나를 -c를 포함하도록 설정할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 당신이 제안한 해결책은 제 답변에서 인용 한 것과 같습니다. '-c'bash 옵션 외에도, Docker에서 명령 행 인자를 관리하는 공식적인 방법이 있습니까? –

+0

문제가 Docker와 관련이 있다고 생각하지 말고, 쉘이 명령 행 args를 처리하는 방법을 생각하십시오. –

+1

우리는 당신이 원하는 것을 따라갈 것인지 확신하지 못합니다 (명령은 무언가에 의해 실행되어야합니다). CMD/run 명령과 ENTRYPOINT/- entrypoint가 있으며 명령이 전달됩니다. 진입 점과 명령이 연결됩니다. –

관련 문제