使用docker-java客户端的stopContainerCmd时如何设置容器停止超时时间
解决方案
docker-java 提供的StopContainerCmd本身支持配置停止超时时间,可通过链式调用withTimeout()方法设置,参数单位为秒,和Docker CLI的-t/--time参数逻辑完全一致:指定容器收到SIGTERM信号后,最多等待多少秒还未正常退出的话,就发送SIGKILL强制终止。
代码示例
修改你的调用代码,在执行exec()前追加超时配置即可:
// 示例:设置停止超时为15秒,可根据业务需求调整参数值 dockerClient.stopContainerCmd(containerId) .withTimeout(15) .exec();
低版本兼容方案
如果你使用的docker-java版本过旧,没有提供withTimeout()方法,可通过手动实现超时逻辑达成相同效果:
- 调用
killContainerCmd向容器发送SIGTERM信号 - 等待你设置的超时时长
- 查询容器状态,如果还处于运行状态,再调用
killContainerCmd发送SIGKILL信号强制终止
内容的提问来源于stack exchange,提问作者codenewbie
相关产品推荐
相关产品推荐

