为何执行docker logs -f会从头返回日志?.NET Core容器日志问题
为什么
docker logs -f每次显示的都是从头开始的计数? 首先明确一点:docker logs -f绝对不会启动新的容器实例!这个命令的作用只是实时跟踪指定容器的日志输出,完全不会影响容器本身的运行状态。
那为什么你每次执行它都看到计数从头开始呢?大概率是你的容器已经被重启过了,而不是docker logs的问题。结合你用VS Docker run的场景,可能的原因有这些:
- VS的Docker工具在某些操作后会自动重启容器:比如你重新构建了镜像、结束了调试会话,或者VS本身的Docker扩展做了后台操作,导致旧容器被停止,新容器启动。你的程序是容器启动后才开始从1计数的,所以新容器的日志自然从头开始。
- 容器本身的重启策略:如果容器因为某些原因崩溃了,Docker会根据配置的重启策略自动重启它,这也会导致程序从头开始计数。
你可以按以下步骤验证:
- 先启动容器,让它运行个1分钟左右,然后执行
docker logs <你的容器ID>,记下最后一行的数字。 - 不要停止容器,立刻执行
docker logs -f <你的容器ID>,这时候应该会从刚才记下的数字之后继续输出,而不是从头开始。 - 如果还是从头开始,就用
docker ps -a查看容器的状态列(STATUS),看看是不是显示Restarting (X) X seconds ago或者有多次启动的记录——这就说明容器确实被重启过了。
另外补充一下:VS的Docker调试模式默认会在每次调试时重新创建容器,如果你是在调试结束后再看日志,那其实已经是新容器的日志了,自然从头开始。如果想让容器持续运行,可以用docker run命令直接启动,而不是通过VS的调试按钮。
内容的提问来源于stack exchange,提问作者穆罕默德 - Moh
相关产品推荐
相关产品推荐

