2016-10-30 41 views
1

我有类似下面的脚本,“docker run”已启动,它将根据docker文件打开tty以执行其命令,大约需要5-6小时才能报告一个执行结束标志,但同时我需要让它完成这项工作,并在shell脚本行中前进,并获得一些pid并为其制定条件。 没有我的问题是,我不能执行“码头运行”,然后从它移动到其他脚本的行。 如何在不影响“码头运行”命令的情况下做到这一点。执行时间未结束时从命令跳转

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

问题有点不清楚。你想在后台运行docker吗? – Rao

+0

我知道如果我使用“-d”,我可以在守护进程模式下运行docker,但我只想运行docker并让它执行其工作并转到下一行,bash将停止在该行中,并且我希望它向前移动。 –

回答

0

我知道,如果我使用“-d”我可以运行在后台模式搬运工,但我只想跑码头工人,让它做其工作,并进入下一行,

那么最简单的方法是直接从主机启动泊坞窗背景

docker run ... & 
       ^^^ 

请注意,您的脚本的其余部分将不会看到你的泊坞窗容器启动的进程(如焦油)。
请参阅“Finding Docker container processes? from host point of view”。
您必须使用docker top