Windows Server 2019环境下Docker容器关闭耗时过长问题咨询
我在Windows Server 2019环境下完成了Docker部署,在需要关闭容器时,控制台界面会长时间处于等待状态。
[问题现象截图]
输入并运行容器shutdown命令后,界面会如图所示长时间停留在该状态。
现咨询引发该问题的可能原因,感谢各位的协助。
该场景下高频触发的原因
- 容器内运行的业务进程未正常响应终止信号。Windows版Docker默认设置10秒的优雅退出超时阈值,如果容器内的服务没有注册Windows系统的进程终止通知监听,就会持续卡在信号等待环节,直到超时触发强制杀进程流程才会结束状态。
- 版本兼容性问题。未安装最新累积更新的Windows Server 2019,搭配19.03及更早版本的原生Docker Engine时,会存在容器管理通信通道的泄漏问题,执行停止操作时会卡在和容器运行时的通信握手阶段,无超时提示也无报错。
- 绑定挂载路径的IO阻塞。如果容器配置了主机本地磁盘或网络共享路径的绑定挂载,当对应磁盘存在读写锁、网络共享连接中断时,停止容器的流程会被挂载卸载步骤阻塞,长时间等待IO资源释放。
- Hyper-V底层服务运行异常。Windows原生Docker依赖
vmcompute、HvHost等Hyper-V相关服务管理轻量容器虚拟机,若上述服务出现状态异常,停止容器的操作会卡在和Hyper-V层的交互环节,无响应也无报错。 - 残留僵尸进程阻塞。之前强制终止容器时未清理干净对应的Docker子进程、Hyper-V虚拟机进程,文件锁会阻塞新的容器停止操作,导致控制台长时间无返回。
快速排查操作
- 运行
docker stop -t 60 <容器ID>拉长优雅退出的等待时长,观察是否能正常完成退出流程。 - 若仍卡死,可执行
docker kill <容器ID>强制终止容器进程,跳过等待环节完成容器关闭。 - 操作前确认容器绑定挂载的磁盘、网络路径访问正常,排除IO阻塞因素。
内容的提问来源于stack exchange,提问作者ouzdev
相关产品推荐
相关产品推荐

