2017-01-21 53 views
1

我想創建一個cron作業,如果Docker容器的運行時間超過了2個小時以上,就會阻止它。停止運行了一段時間的Docker容器

我可以得到他們開始的時間。

$ docker inspect -f '{{ .State.StartedAt }}' $(docker ps -q)

只是需要比較的是2個小時前...

$ date --utc --date="-2 hours" +"%Y-%m-%dT%H:%M:%S.%NZ"

...如果它的前面停止容器

$ docker stop <<container_id>>

如何我可以用bash腳本來做到這一點嗎?

+0

你的問題到底是什麼? – Travis

回答

0

這在issue 1905

bash裏面的替代儘快討論在2013年是:

#!/bin/bash 
set -e 

to=$1 
shift 

cont=$(docker run -d "[email protected]") 
code=$(timeout "$to" docker wait "$cont" || true) 
docker kill $cont &> /dev/null 
echo -n 'status: ' 
if [ -z "$code" ]; then 
    echo timeout 
else 
    echo exited: $code 
fi 

echo output: 
# pipe to sed simply for pretty nice indentation 
docker logs $cont | sed 's/^/\t/' 

有:

$ docker-run-timeout.sh 10s busybox sh -c 'echo start && sleep 30 && echo finish' 
status: timeout 
output: 
    start 

注意,與搬運工1.13,你可以用--rm -d運行(見PR 20848)。