给定一个已使用 memory limit 启动的 Docker 容器,我想知道是否有可能检测到何时强制执行内存限制,因此容器即将崩溃,因为它的内存不足。是否有一些我可以捕获的信号?或者我可以轮询一些日志文件?事后检测到这一点,即使延迟几分钟仍然有用
最佳答案
如果 docker 由于内存限制而终止了您的容器,您将看到:
docker inspect --format '{{.State.OOMKilled}}' ${container_id}
设置为 true。
请注意,如果操作系统在达到 Docker 内存限制之前终止容器内运行的进程,您将看到的只是应用程序收到的 SIGKILL。
<小时/>您可以主动监控容器的docker stats
,看看它是否接近此处其他答案所述的限制。
并且您可以近乎实时地监控任何因 OOM 而被终止的容器的 docker 事件
:
docker events --filter type=container --filter event=oom
您可以调整上述事件命令来监视特定容器或受到时间限制。请参阅documentation获取可用标志。
关于docker - 如何检测 Docker 容器何时达到其配置的内存限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53839415/