我正在使用docker logs -f mycontainer检查日志。如果按docker rm -f mycontainer然后docker run -d --name mycontainer重新启动mycontainer,则需要使用Ctrl-C,然后重新运行docker logs命令以获取日志。我想知道是否有更好的方法让我即使在容器重新启动后也能继续接收日志。
docker logs -f mycontainer
docker rm -f mycontainer
docker run -d --name mycontainer
mycontainer
Ctrl-C
docker logs
eqoofvh91#
正如其他评论者所提到的,“rm”命令正在破坏您的容器,而不是重新启动它。但要回答你的问题,你可以使用这样的东西:
watch -n 0 "docker logs mycontainer"
字符串docker logs命令不会为停止的容器持续运行,但您可以使用“watch”命令实现类似的效果。由于它不是Docker命令,因此它不关心容器是否正在运行。如果你用的是Mac,你可能没有手表。可以使用pip安装。同样的事情也可以用一行bash脚本来实现,但我发现watch要整洁得多。
8xiog9wr2#
两件事使用docker rm -f mycontainer,你并没有停止你的容器,你正在杀死它,然后你开始另一个全新的您可以使用docker stop mycontainer和start或简单的docker restart mycontainer来保存日志。由于容器是无状态的,如果删除容器,您将丢失日志。在这种情况下,您必须使用一个卷来写入应用程序日志。它们将在主机上,而不是在您的容器中。
docker stop mycontainer
docker restart mycontainer
2条答案
按热度按时间eqoofvh91#
正如其他评论者所提到的,“rm”命令正在破坏您的容器,而不是重新启动它。
但要回答你的问题,你可以使用这样的东西:
字符串
docker logs命令不会为停止的容器持续运行,但您可以使用“watch”命令实现类似的效果。由于它不是Docker命令,因此它不关心容器是否正在运行。
如果你用的是Mac,你可能没有手表。可以使用pip安装。同样的事情也可以用一行bash脚本来实现,但我发现watch要整洁得多。
8xiog9wr2#
两件事
使用
docker rm -f mycontainer
,你并没有停止你的容器,你正在杀死它,然后你开始另一个全新的您可以使用
docker stop mycontainer
和start或简单的docker restart mycontainer
来保存日志。由于容器是无状态的,如果删除容器,您将丢失日志。在这种情况下,您必须使用一个卷来写入应用程序日志。它们将在主机上,而不是在您的容器中。