2017-01-21 2 views
1

Dockerコンテナが2時間以上稼働していた場合に停止するcronジョブを作成したいとします。一定時間稼働している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

これは、bashの代替がissue 1905

で、すぐに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参照)。

関連する問題