2016-10-30 5 views
1

"docker run"이 시작된 상태에서 docker 파일에 따라 명령을 실행하기 위해 tty를 열면보고하는 데 약 5-6 시간이 걸릴 것입니다 실행 종료 표시가되지만 그 동안 작업을 수행하고 쉘 스크립트 행으로 이동하여 일부 PID를 가져 와서 조건을 만들어야합니다. "docker run"을 실행 한 다음 다른 스크립트 행으로 이동할 수 없다는 것이 내 문제는 아닙니다. "docker run"명령에 영향을주지 않고 어떻게 할 수 있습니까?실행 시간이 끝나지 않은 상태에서 건너 뛰기

docker run --name=something -it --rm \ 
     --link=postgresql:postgresql \ 
     --publish=80:80 \ 
     --env='something_PORT=80' \ 
     --env='NGINX_MAX_UPLOAD_SIZE=60m' \ 
     --volume=/srv/docker/something:/home/something/data \ 
     --volume=/srv/docker/something/rgloader:/home/something/rgloader \ 
     something:3.3 \ 
     app:backup:restore 

#30 sec pass till process starts to unpack tar file. 
    sleep 30 

#Get PID of tar extraction process 
    PID=`ps au | grep "tar -xf" | head -n 1 | awk '{print $2}'` 
echo $PID 

echo "tar file extraction is completed" 

#wait until tar extraction process ends 

while [ -e /proc/$PID ] 
do 
    echo $PID PID still running 
    sleep 10 
done 
+0

문제가 불분명합니다. 백그라운드에서'도커 실행'을 원하십니까? – Rao

+0

"-d"를 사용하면 docker를 데몬 모드로 실행할 수 있습니다. 다만 도커를 실행하여 작업을 수행하고 다음 행으로 넘어가려면 bash가 그 행에서 멈추고 앞으로 나아갈 수있게하십시오. –

답변

0

내가 데몬 모드로 고정 표시기를 실행할 수 있습니다 "-d"사용하는 경우 알아요,하지만 난 그냥 실행 고정 표시기를 원하고 그것의 일을하고 다음 행으로 가자,

그리고 가장 간단한 방법은 호스트에서 직접 (타르 등) 백그라운드에서 스크립트의 나머지 부분이 고정 표시기 컨테이너에 의해 시작 프로세스를 표시되지 않습니다

docker run ... & 
       ^^^ 

참고 고정 표시기를 시작하는 것입니다.
"Finding Docker container processes? from host point of view"을 참조하십시오.
docker top을 사용해야합니다.

관련 문제