是否可以在1天后自动删除正在运行的容器?

时间:2017-12-08 12:23:59

标签: shell docker dockerfile boot2docker

我创建了自己的linux容器并且处于运行状态。我想在一天后自动删除正在运行的容器。

无论如何都要自动删除容器?

如果可能,我在哪里必须在Dockerfile中添加脚本/代码?

2 个答案:

答案 0 :(得分:2)

没有内置功能可以明确地执行此操作。但是,你可以在几个地方破解解决方案。

在容器内,您可以拥有一个运行的入口点:

#!/bin/sh
( sleep 86400 && kill 1 && sleep 10 && kill -9 1 )&
exec "$@"

在后台运行一个子shell,它将休眠一天,发送一个SIGTERM,给进程10秒钟优雅退出,然后发送一个SIGKILL。最后的执行官将CMD作为pid 1运行。

你可以在一天之后劫持健康检查以杀死pid 1。您可以在运行运行状况检查时使用超时,或者如果您需要定期运行状况检查以查找其他用途,请使用ps命令查看进程启动时间。

在容器之外,你可以运行一个脚本,可能是在cron中,它检查docker ps的输出,gret为" Up。* days",并选择性地运行{{1匹配线上。我建议使用docker rm -f的{​​{1}}选项编写脚本,并使用容器上的标签来限制执行此操作的容器。

答案 1 :(得分:0)

我之前有过这个要求,我在脚本文件中使用了睡眠86400,如

service apache2 start&&在bash脚本中睡眠86400, 运行1天。

否则你可以通过这个解释

的帖子

stop and delete docker container if its running