我有一个在1G RAM主机中运行的Docker容器(也有在同一主机中运行的其他容器)。该Docker容器中的应用程序将解码一些图像,这可能会消耗大量内存。
该容器会不时退出。我怀疑这是由于内存不足,但不是很确定。我需要找到根本原因的方法。那么,有什么办法知道这个集装箱的死亡发生了什么?
其他人提到docker logs $container_id
查看应用程序的输出。这永远是我要检查的第一件事。
接下来,您可以运行docker inspect $container_id
查看状态的详细信息,例如:
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 2,
"Error": "",
"StartedAt": "2016-06-28T21:26:53.477229071Z",
"FinishedAt": "2016-06-28T21:26:53.478066987Z"
},
重要的一行是“
OOMKilled”,如果您超出了容器的内存限制并且Docker终止了您的应用程序,则该行将为true。您可能还需要查找退出代码,以查看其是否标识出您的应用退出的原因。
请注意,这仅表示docker本身是否会杀死您的进程,并要求您在容器上设置内存限制。在Docker外部,如果主机本身的内存不足,Linux内核可以大笑您的进程。发生这种情况时,Linux通常会在/
var / log中写入日志。使用Windows和Mac上的Docker Desktop,您可以在docker设置中调整分配给嵌入式Linux VM的内存。
问题内容: 考虑: 我按 + 退出。 我想继续运行此容器,但发现不能。 唯一的方法是 我对吗?有没有更好的方法?(我正在使用docker 0.8.0。) 问题答案: 您可以在现有容器退出后重新启动,并且所做的更改仍然存在。
考虑: 我按下Ctrl键退出它。 我想继续运行这个容器,但我发现我不能。 唯一的方法就是 我说得对吗?有更好的方法吗?(我使用的是docker 0.8.0。)
问题内容: 例如,如果我使用命令, 它将启动一个终端,之后我可以安装软件包和所有软件包。现在,当我使用命令时,它会返回到终端。(主要一) 那么如何再次访问同一容器?当我再次运行该命令时,我得到了一个新的高山。 请帮忙 问题答案: 拉图像 看到那里的图像 看看高山里面有什么 现在您的问题是如何留在外壳上 您在Shell脚本命令行中。一些发行版可能有bash shell。 此时,您可以使用alpine
问题内容: 有什么办法可以查看已退出的容器的日志? 我可以使用来获取已退出容器的容器ID,但是我想知道它在运行时发生了什么。 问题答案: 使用。它也适用于停止的容器,并捕获容器主过程的整个STDOUT和STDERR流: