重启容器后使用docker logs -f命令。

7
我使用 docker logs -f mycontainer 命令来查看日志。如果我通过 docker rm -f mycontainer 命令重启 mycontainer,那么我需要使用 Ctrl-C 来停止命令,然后重新运行 docker logs 命令来获取日志。我想知道是否有更好的方法让我在容器重启后仍然能够接收日志。

5
技术上讲,你并不是在重新启动容器,而是在销毁它并创建一个同名的新容器。重新启动应该运行 docker stop mycontainer; docker start mycontainer 或只运行 docker restart mycontainer - jwodder
2个回答

5
2件事
使用`docker rm -f mycontainer`命令并不是停止容器,而是杀死它,然后再启动一个全新的容器。
你可以使用`docker stop mycontainer`命令来停止容器,然后再启动或者直接使用`docker restart mycontainer`命令来保留日志。
由于容器是无状态的,如果删除容器,你将会丢失日志。在这种情况下,你需要使用卷来写入应用程序日志。这样日志将保存在主机上,而不是容器内部。

4
谢谢。我之前不知道 restart 命令,一直像穴居人一样手动停止和启动。哈哈。 - Frak

5

正如其他评论者所提到的那样,"rm"命令会销毁您的容器,而非重新启动它。

但是要回答您的问题,您可以使用以下内容:

watch -n 0 "docker logs mycontainer"

使用docker logs命令无法查看已停止容器的日志,但是您可以使用"watch"命令来实现类似的效果。由于它不是Docker命令,因此不需要关心容器是否在运行。

如果您使用的是Mac操作系统,则可能没有安装watch命令。可以使用pip进行安装。同样的效果也可以通过一个一行的bash脚本实现,但我发现使用watch更加整洁。


我在我的Mac(High Sierra)上实际上有一个监视器,但尽管它看起来不断更新(终端窗口标题和时间戳不断更新),但日志并没有更新。我已经多次启动和停止了容器,但没有任何改变。 - Frak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接