【问题标题】:Is it possible to delete running container automatically after 1 day?是否可以在 1 天后自动删除正在运行的容器?
【发布时间】:2017-12-08 12:23:58
【问题描述】:

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

有没有办法自动删除容器?

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

【问题讨论】:

    标签: shell docker dockerfile boot2docker


    【解决方案1】:

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


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

    #!/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 选项编写脚本,并在容器上使用标签来限制执行此操作的容器。

    【讨论】:

      【解决方案2】:

      我之前有这个要求,我在脚本文件中使用了 sleep 86400

      service apache2 start && sleep 86400 in bash script , 运行 1 天。

      否则你可以通过这个线程来解释

      stop and delete docker container if its running

      【讨论】:

      • 99,999 秒是 27.77 小时,您想要 86400 秒 1 天。
      • 这是我运行一天的测试环境,所以只使用了 99999,将在准确的 1 天更新答案
      猜你喜欢
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      相关资源
      最近更新 更多