我有以下设置:
在600 MB RAM机器中。
我还会定期截断日志:
/var/lib/docker/containers/CID/CID-json.log
建议here以避免100%的磁盘情况。
问题
Docker守护程序启动时内存使用率较低,最初为1%,运行容器2天后缓慢增加到40%。
参考
在this issue和this issue中讨论过Docker守护程序内存泄漏问题。但他们两人现在都在关闭,并在提交时合并。我正在运行docker的最新主要版本(Docker版本1.4.0,版本4595d4f),但仍面临单调增加的内存使用问题。
编辑:我做了这个实验:只需在容器中运行一个bash进程,打印出很多行到STDERR,docker守护程序进程的内存使用量加速很快即使基础日志文件(/var/lib/docker/containers/CID/CID-json.log)被清除,docker是否会执行某些log buffering并且不会释放内存?
显然no way清除日志。对于长时间运行的任务,this commit会解决这个问题吗?
我不知道为什么docker守护进程的内存使用量不断增加。如何调试此问题?
答案 0 :(得分:2)
至少还有一个与日志内存泄漏有关的未决问题:https://github.com/docker/docker/issues/9139
答案 1 :(得分:0)
这可能不是你想要的,但我经常在一天的一段时间后运行一个cron作业来重启我的容器。这样可以确保容器始终具有足够的RAM,而且我通常也会在创建容器时限制容器的最大ram使用量。
容器只需几秒钟即可重新启动并提供数据,如果您没有运行高可用性服务并且可以承受几秒钟的停机时间,请考虑重新启动容器(假设您没有持久卷)。
但是,如果您确实找到了问题的解决方案,请告诉我们。
答案 2 :(得分:-2)
docker rm $(docker ps -a -q)
docker rmi --force $(docker images -q)
docker system prune --force
需要是root用户。
systemctl stop docker
rm -rf / var / lib / docker / aufs
apt-get autoclean
apt-get autoremove
systemctl start docker