docker - 如何知道 docker 容器退出的原因?

标签 docker containers exit

我有一个 Docker 容器在 1G RAM 的主机上运行(同一主机上还有其他容器运行)。这个 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 杀死您的应用程序,这将是正确的。您可能还想查找退出代码,看看它是否确定了您的应用退出的原因。

注意,这仅表明 docker 本身是否会终止您的进程,并要求您为容器设置内存限制。在 docker 之外,如果主机本身内存不足,Linux 内核可能会终止您的进程。发生这种情况时,Linux 通常会写入/var/log 中的日志。使用 Windows 和 Mac 上的 Docker Desktop,您可以在 docker 设置中调整分配给嵌入式 Linux VM 的内存。

关于docker - 如何知道 docker 容器退出的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38112968/

相关文章:

docker - 无法停止或删除Docker中的容器,显示权限被拒绝

node.js - Docker 重启入口点

apache-spark - 在Docker Parquet错误中发 Spark 未找到预定义架构

html - Div 标签和标题

docker - 如何在 docker 容器内运行 cron 作业?

ios - 在 Spritekit (Swift) 中实现 "game quit"选项的最简单方法是什么。

php - Docker为Nginx/PHP-FPM/Composer撰写

ssl - 如何在 ECS Fargate 上使用 SSL/TLS

c#应用程序在主窗体关闭时退出

PHP:利用 exit();或者死();在 header ("Location: "之后);