电脑休眠期间Docker容器是否仍会保持运行状态?
结论
电脑休眠状态下Docker容器完全不会实际运行,你看到的21小时运行时长是Docker统计规则导致的显示偏差,和容器实际运行状态不符。
具体原因
- 不管是把内存数据写入磁盘后整机断电的深度休眠,还是仅保持内存供电的待机模式,休眠期间CPU会停止调度所有进程,不存在任何程序可以持续运行。Docker容器本质是宿主机上做了资源隔离的普通进程集合,和宿主机上的浏览器、文档编辑器等进程状态完全同步,宿主机休眠时容器进程会被直接冻结,不可能继续执行任务。
- Docker展示的容器运行时长,计算逻辑是
当前系统时间 - 容器启动的时间点,统计的是自然流逝的墙钟时间,不会自动扣除宿主机休眠、进程被冻结的时间段。你昨天创建启动容器后,电脑休眠的十几个小时被全部算进了容器运行时长,最终就显示出了21小时的数值,和实际有效运行时间没有对应关系。
验证方法
你可以花10分钟做个简单测试确认这个逻辑:
- 启动一个每秒打印当前时间的测试容器,执行命令:
docker run --rm -d alpine sh -c "while true; do date; sleep 1; done" - 查看容器日志确认时间正常输出后,把电脑设置为休眠,等待10分钟左右再唤醒
- 再次查看容器日志,会发现时间戳直接跳过了休眠的10分钟区间,没有对应时段的输出,就能直接证明休眠期间容器完全处于暂停状态,没有实际运行。
内容的提问来源于stack exchange,提问作者PySquirrel
相关产品推荐
相关产品推荐

