【发布时间】:2017-12-08 12:23:58
【问题描述】:
我已经创建了自己的 linux 容器并且它处于运行状态。我想在一天后自动删除正在运行的容器。
有没有办法自动删除容器?
如果可能,我必须在我的 Dockerfile 中的哪里添加脚本/代码?
【问题讨论】:
标签: shell docker dockerfile boot2docker
我已经创建了自己的 linux 容器并且它处于运行状态。我想在一天后自动删除正在运行的容器。
有没有办法自动删除容器?
如果可能,我必须在我的 Dockerfile 中的哪里添加脚本/代码?
【问题讨论】:
标签: shell docker dockerfile boot2docker
没有明确执行此操作的内置功能。但是,您可以在多个地方破解解决方案。
在容器内,你可以有一个运行的入口点:
#!/bin/sh
( sleep 86400 && kill 1 && sleep 10 && kill -9 1 )&
exec "$@"
它在后台运行一个子shell,它将休眠一天,发送一个SIGTERM,给进程10秒的时间优雅退出,然后发送一个SIGKILL。最后的 exec 然后将您的 CMD 作为 pid 1 运行。
您可以在一天后劫持运行状况检查以杀死 pid 1。您可以在运行状况检查时设置超时,或者如果您需要定期进行健康检查以用于其他目的,则可以使用 ps 命令查看进程开始时间。
在容器之外,您可以运行一个脚本(可能在 cron 中),检查 docker ps 的输出,用 greps 查找“Up .* days”,并在匹配的行上选择性地运行 docker rm -f。我建议使用 docker ps 的 --format 选项编写脚本,并在容器上使用标签来限制执行此操作的容器。
【讨论】:
我之前有这个要求,我在脚本文件中使用了 sleep 86400
service apache2 start && sleep 86400 in bash script , 运行 1 天。
否则你可以通过这个线程来解释
【讨论】: