我执行:
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杀死。
如何正确使用?
答案 0 :(得分:1)
AFAIK没有任何docker标志在指定时间内运行容器。
正如您引用的命令所执行的那样设置了当docker停止时发送到容器主进程的信号(在您的情况下为SIGKILL
)。
如果要运行容器一段时间然后停止它,可以使用运行带有时间限制的命令的timeout
实用程序:
timeout --signal=SIGTERM 5 docker run --rm test
该命令在超时(5秒)时将SIGTERM
信号发送到docker进程,该进程将其传播到正在运行的服务。此外,如果容器在发送初始信号后仍在运行,则可以使用--kill-after duration
标志强制容器停止。希望它有所帮助。