2014-01-26 2 views
1

Docker 컨테이너에서 백그라운드 작업이 실행되는 스크립트를 실행할 때 기대했던 리턴 코드가 표시되지 않습니다. 당신이 반환 코드 1로 기대백그라운드 명령의 Docker 반환 코드

#!/bin/bash 
set -e 

ls/& 
exit 1 

그래서 docker run jakob/test cat /start_script.shdocker build -t jakob/test .을 실행 :

FROM ubuntu:latest 
MAINTAINER Jakob H. Thomsen ([email protected]) 

RUN echo "#!/bin/bash\nset -e\n\nls/&\nexit 1" > /start_script.sh 
RUN chmod +x /start_script.sh 

그것은 용기 내부의 다음 파일 /start_script.sh를 만듭니다

이 예를 들어 고정 표시기 파일은 문제를 강조 , 때문에 exit 1. 0이 아니며 ls/&으로 인해 발생합니다 (명령을 제거하면 예상 리턴 코드 1이됩니다).

내 질문에 ls/&exit 1 명령의 반환 코드를 무시하는 이유는 무엇입니까? exit 1을 백그라운드에서 실행하려고 시도했지만 반환 코드가 변경되지 않습니다 ...

설치 프로그램을 사용하여 Ruby 사양을 실행하고 있으므로 실제로 마지막 코드의 반환 코드에 의존합니다. Docker가 마지막 명령의 리턴 코드를 리턴하도록하기 위해 할 수있는 일이 있습니까?

감사합니다.이 '잘못된'반환 코드의 정확한 문제점을 정확히 찾아내는 데 많은 시간을 할애 해 주시면 감사하겠습니다.

답변