我试图在Docker中使用Elasticsearch用于本地开发。虽然我可以找到有效的容器,但是当发送docker stop
时,容器会挂起默认的10秒,然后docker强行杀死容器。我的假设是,ES要么不在PID 1上,要么其他服务阻止它立即关闭。
我很好奇是否有人可以对此进行扩展,或者更准确地解释为什么会发生这种情况。当其他容器在1-2秒后关闭时,我正在运行大量测试并且10s +关闭只会很烦人。
答案 0 :(得分:1)
如果您不想等待10秒钟,则可以运行docker kill
而不是docker stop
。您还可以使用docker stop
选项调整-t
上的超时,例如docker stop -t 2 $container_id
仅等待2秒而不是默认值10。
至于为什么它忽略了sigkill,这可能取决于你正在运行的图像(弹性搜索不止一个)。但是,如果pid 1是/ bin / sh或/ bin / bash之类的shell,它将不会传递信号。如果pid 1是弹性搜索过程,它可能会忽略该信号,或者10秒可能不够长,无法完全清理和关闭。