如果我在同一主机上运行两个Docker容器,它们每个都有自己的页面缓存,还是使用主机的页面缓存?
Page cache由内核管理,所有容器都使用它。
在moby/moby issue 21759查看更多信息
Docker可以很容易地生成大量容器并获得更好的密度,但它也使得在一台机器上运行太多服务或运行需要太多RAM的服务变得容易。
official documentation将
devicemapper
(direct-lvm
)列为生产就绪存储驱动程序,但它没有非常有效的内存使用。官方文件也没有说明。多个相同的容器将增加页面缓存的内存使用量。为了使这更好并获得更好的性能,以下内容应该有所帮助,类似于它在Docker和容器之外的帮助:
- 为长期运行的服务和应用程序(例如更小的二进制文件,更小的图像,优化内存使用等)使容器更小
- 非常重要:使用卷并绑定挂载,而不是将数据存储在容器中
- 非常重要:确保运行具有维护内核的系统,最新的Docker和devicemapper库(例如完全更新的CentOS 7 / RHEL 7 / Ubuntu 14.04 / Ubuntu 16.04)