我有一个不断重启的docker容器;
Name Command State Ports
--------------------------------------------------------------------------------------------------------
wenotecloudstorage_flask_1 /bin/sh -c /usr/local/bin/ ... Restarting
wenotecloudstorage_nginx_1 nginx -g daemon off; Up 0.0.0.0:2083->443/tcp, 80/tcp
我希望我有一个简单的方法来查看错误日志,了解它为什么重新启动。
我在Docker上读到:容器一直在重新启动
我试试;
docker logs --tail 50 --follow --timestamps wenotecloudstorage_flask_1
error from daemon in stream: Error grabbing logs: EOF
有没有一种简单的方法可以找出docker容器不断重启的原因?
确保命令不退出
有同样的问题,容器一直在重新启动,但docker logs
和docker-compose logs
只是在循环中向我显示了干净的日志,没有关于重新启动的线索。
然后我意识到确实没有错误,它只是因为我添加到YML配置中的命令
而退出。为了验证它,我在最后一个命令中附加了尾-f /dev/null
,例如:
command: bash -c "nginx -t && tail -f /dev/null"
而这一次,它熬夜了!
使用正确的命令
理论得到证实后,我使用< code > docker inspect $ image _ id 查找正确的< code>CMD,并使用正确的命令,例如:
command: bash -c "nginx -t && nginx -g 'daemon off;'"
它为什么会重启
两种可能的原因是,出现错误或命令提前退出。就我而言,是后者。我以前使用的图像已经有正确的<code>CMD</code>以上。但是我想添加一些额外的命令,而不必使用单独的dockerfile。
所以我放弃了dockerfile并使用了command,因为compose文件没有等价的< code>RUN(否则请纠正我)。但是,它“覆盖了容器映像声明的默认命令”,这是阻止容器提前退出的原因。
如何确定重新启动原因
看看docker ps
的输出,我相信括号中的数字例如“重新启动(1)”是退出代码。您还可以在前台运行 docker-compose
(未分离,即没有 -d
),以便您可以实时查看日志和潜在的退出代码。
或者运行以下命令:
docker inspect $your_container_name | grep -i state -C 12
查找状态对象:
"State": {
"Status": "restarting",
"Running": true,
"Paused": false,
"Restarting": true,
"Dead": false,
"Pid": 0,
"ExitCode": 0,
"Error": "",
...
},
这里要寻找的主要内容是< code>ExitCode。如果它是0,并且没有< code >错误,则该命令可能会提前结束,即它没有作为服务运行。如果代码不为0,则存在实际的执行错误,您应该能够通过< code>docker-compose logs或< code>docker logs看到它。
不要使用“泊坞窗日志”。使用“docker-compose 日志烧瓶”来查看重新启动容器的日志。使用您的选项:
docker-compose logs -f --tail=50 flask
您看到的错误是因为正常的“docker日志”正在尝试读取日志,但是容器已经死了。Docker-compose处理得更好。
如果它不在日志中,那么,那么您将不得不更深入地挖掘应用程序的配置。但我敢打赌,你会看到一个很好的日志消息,它将带你到正确的方向。
我今天使用应用程序容器/媒体维基泊出程序映像部署了MediaWiki的一个实例,我现在遇到了一个新问题,我找不到任何线索。尝试使用以下命令附加到媒体维基前端容器后: 由于我忽略的原因,它在我的配置中回答< code >终止,并尝试: 我确实收到了一些接近错误消息的内容: 这是我的新问题,因为这个容器永远不会停止重新启动。我可以看到,使用<code>docker ps-a。 问题是,我能够停止容器(
问题内容: 我有一个在1G RAM主机中运行的Docker容器(也有在同一主机中运行的其他容器)。该Docker容器中的应用程序将解码一些图像,这可能会消耗大量内存。 该容器会不时退出。我怀疑这是由于内存不足,但不是很确定。我需要找到根本原因的方法。那么,有什么办法知道这个集装箱的死亡发生了什么? 问题答案: 其他人提到查看应用程序的输出。这永远是我要检查的第一件事。 接下来,您可以运行查看状态的
我有一个循环中的python脚本 将AWS S3中的视频块下载到/filename 然后继续循环,直到AWS SQS队列为空。 剧本很棒!我已经运行了几个月了。硬盘空间会有所不同,但永远不会达到5%左右,这取决于视频的大小。 我决定把这个脚本放在docker容器中,运行docker compose,这样我就可以一次运行一堆脚本。 问题是硬盘充满了!我知道5运行磁盘上的空间会更高,但是当我完成处理后
本文向大家介绍Android中断并重启一个Thread线程的简单方法,包括了Android中断并重启一个Thread线程的简单方法的使用技巧和注意事项,需要的朋友参考一下 这里简单的总结下(大概思路,没调试,可能会有错!): MyThread.java run函数里面必须有判断中断状态的while循环,外部在中断Thread时,必须显示调用interrupt()。注意:interrupte()函数
以下是表格(简化): 以下是查询(简化): 死锁消息: 由多个进程并行执行的查询如何导致死锁 谢谢!