内存问题,如何pipe理已退出的Docker容器?

我现在正在使用Kubernetes和Docker在10台物理机器上configurationWordPress,Spark和Storm等服务

但是在启动和终止Docker容器之后,即使我通过Kubernetes删除或Docker kill命令杀死了所有Containers,所使用的内存也会增加。

我注意到有很多状态退出的容器,当我移除所有退出的容器后,它释放了很多回忆。

然后我想出了一个解决scheme,在每个Docker主机上写一个删除退出的容器计划到cron表中。

但这是否合适? 如果没有,我怎么能释放回忆?

这是适当的,如果你没有中间状态保存(docker提交)。

另一个类似的解决scheme是使用--rm选项运行--rm :如果退出,容器将被自动删除。
但是如果你在容器启动的时候不得不debugging错误,你需要--rm没有 --rm情况下运行。

不build议使用外部容器垃圾收集脚本。 Kubernetes依靠已退出的容器作为墓碑来重build吊舱状态和/或提供日志。 即使您不关心容器日志,如果您在kubernetes检查之前删除已退出的容器并正确logging状态,可能会导致状态不准确并重新启动决策。 将来可能会消除这种依赖性。

现在,实现更积极的容器垃圾收集的最好方法是通过调整参数,如本指南中所述 。

仅供参考,在改善垃圾收集行为方面也存在一些未解决的问题。 #13287就是一个例子。

如果您真的想自己清理容器,那么删除与已删除的容器关联的容器是安全的。 在保留最近的几个退出的容器的同时移除属于同一个容器/容器的多个退出的容器也是相对低风险的。