首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当docker消耗一定的内存时,重启docker

当docker消耗一定的内存时,重启docker
EN

Stack Overflow用户
提问于 2017-06-21 15:33:01
回答 2查看 8.2K关注 0票数 7

我在一台机器上运行了多个docker进程,我想监控它们,一旦超过一定的内存阈值就重新启动docker进程。我可以让docker在达到内存阈值时重新启动它的进程吗?我有什么选择?

谢谢

亚历克斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-21 15:58:31

您可以创建一个shell脚本来监视资源使用情况,并在它达到内存限制时重新启动Docker守护进程,但我认为这实际上不是一个好方法。

使用此命令,您可以查看按内存使用情况排序的容器。找出哪个容器使用了太多内存,并尝试找出原因,因为发生了这种情况。

docker stats --no-stream --format "table {{.Name}}\t{{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" | sort -k 4 -h

此外,如果容器的内存消耗是正常的,但您希望限制它,则可以限制分配给每个容器的资源。您可以使用docker run中的--memory选项来完成此操作。

有关内存限制的更多信息,请在Docker文档中查看此信息:https://docs.docker.com/engine/admin/resource_constraints/

希望这能帮上忙,祝你好运。

编辑:回答你的响应,如果你的容器内存用完了,它会被内核自动杀死。您可以使用选项--memory配置内存限制,并将重新启动策略设置为--restart=always。这样,您的容器将被OOM (out-of-memory,内存不足)错误自动终止,但它将被重启,因为它的重启策略是在出现错误后继续重启。

票数 11
EN

Stack Overflow用户

发布于 2021-04-07 02:28:18

请始终记住,如果您不设置--memory- Swap,容器将不会在--memory value limit处重新启动,因为Docker将在reach --memory limit之后使用swap,所以,如果您想在--memory value处重新启动,您需要设置与--memory limit相同的值--memory-swap。

代码语言:javascript
运行
复制
docker run --memory 50m --memory-swap 50m --rm -it progrium/stress --vm 1 --vm-bytes 62914560 --timeout 1s
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44669568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档