如何将执行时间放到容器中?

时间:2018-06-15 07:49:00

标签: docker

我执行:

docker run --stop-signal=9 --stop-timeout=30 --name=test test
  

但这不会杀死容器,它什么都不做!

来自Manual Docker Run的

  

使用信号停止容器( - 停止信号)

     

--stop-signal标志设置将发送到容器退出的系统调用信号。此信号可以是与内核的系统调用表中的位置匹配的有效无符号数,例如9,或SIGNAME格式的信号名,例如SIGKILL。

     

使用超时停止容器(--stop-timeout)

     

--stop-timeout标志设置将发送到容器退出的预定义(请参阅--stop-signal)系统调用信号的超时(以秒为单位)。超时过后,容器将被SIGKILL杀死。

如何正确使用?

1 个答案:

答案 0 :(得分:1)

AFAIK没有任何docker标志在指定时间内运行容器。 正如您引用的命令所执行的那样设置了当docker停止时发送到容器主进程的信号(在您的情况下为SIGKILL)。

如果要运行容器一段时间然后停止它,可以使用运行带有时间限制的命令的timeout实用程序:

timeout --signal=SIGTERM 5  docker run --rm test

该命令在超时(5秒)时将SIGTERM信号发送到docker进程,该进程将其传播到正在运行的服务。此外,如果容器在发送初始信号后仍在运行,则可以使用--kill-after duration标志强制容器停止。希望它有所帮助。