Jenkins shell命令等待docker容器下载、启动、运行

Jenkins shell命令等待docker容器下载、启动、运行,shell,jenkins,docker,Shell,Jenkins,Docker,我使用下面的Docker步骤打开selenium网格 我的问题是如何优雅地等待特定容器下载、启动并运行 docker run -ti -m 150M --memory-swap 300M --cpu-shares=104 -d -p 4444:4444 --name selenium-hub -e GRID_BROWSER_TIMEOUT=15000 selenium/hub sleep 10 for i in {1..2} do echo "Starting No

我使用下面的Docker步骤打开selenium网格

我的问题是如何优雅地等待特定容器下载、启动并运行

docker run -ti -m 150M --memory-swap 300M --cpu-shares=104 -d -p 4444:4444 --name selenium-hub -e GRID_BROWSER_TIMEOUT=15000 selenium/hub
sleep 10

for i in {1..2}
 do
    echo "Starting Node: $i"
    docker run -ti -m 750M --memory-swap 900M --cpu-shares=460 -d --link selenium-hub:hub -v /dev/shm:/dev/shm selenium/node-chrome
    sleep 5
done
是否有更好的方法避免睡眠,因为有时容器下载需要更长的时间

工作完成后,我停止并移除所有容器,以便为新工作重新开始

谢谢和问候,
Vikram

您可以使用curl调用selenium服务并检查结果:

然后在while中检查计数值是否与零不同

COUNT=$(curl-qlocalhost:4444 | grep403 | wc-l)
而[$COUNT-等式0]
做
睡眠1
COUNT=$(curl-qlocalhost:4444 | grep403 | wc-l)
完成

关于在两次运行之间使用
和&
在一行中<代码>docker运行…&&docker run…对不起,我不理解grep 403?每个节点容器都有唯一的端口,那么403是如何关联的呢?当您通过localhost:4444调用网格时,对于像selenium/standalone firefox这样的独立容器,它会返回“错误403 Proxy禁止”,以便您可以检查它。您还可以使用grep调用html并检查注册了多少个节点