Docker 容器对于 memcached 实例有什么好处?

问题描述 投票:0回答:4

其中一个 Docker 示例适用于配置了 Memcached 的容器。我想知道为什么人们会想要这个而不是配置了 Memcached 的虚拟机?我猜测在同一主机下运行多个 memcached docker 容器是没有意义的,唯一真正的优势是在 docker 容器中“旋转”memcached 堆栈与通过虚拟机的 Memcached 相比的速度优势。它是否正确?

另外,如何设置docker容器中memcached使用的内存?如果一台主机下有两个或多个带有 Memcached 的 docker 容器,这将如何工作? (我再次假设两个或更多没有意义)。

linux memcached docker lxc
4个回答
19
投票

我想知道为什么人们会想要这个而不是配置了 Memcached 的虚拟机?

安全性:如果有人破坏了memcached并在文件系统中植入木马,也没关系——当您启动新的memchached时,文件系统就会被丢弃。

隔离:您可以对每个容器进行硬限制,以防止其使用过多的 RAM。

标准化:目前,每个应用程序/数据库/缓存/负载均衡器都必须记录要安装什么、要配置什么以及要运行什么。没有标准(也不乏木偶、厨师等工具)。但这些工具非常复杂,并不是真正独立于操作系统(尽管他们声称),并且从开发到部署都具有相同的复杂性。

对于 docker,一切都只是一个以

run BLAH
开头的容器。如果您的应用程序有 5 层,则只需运行 5 个容器,并在顶部进行少量编排。开发人员永远不需要“查看容器”,除非他们是在该层进行开发。

资源:您可以在普通 PC 上启动 1000 个 docker 容器,但启动 100 个虚拟机就会遇到麻烦。限制是 CPU 和 RAM。 Docker 容器只是“增强型”chroot 中的进程。在虚拟机上,有数十个后台进程(cron、logrotation、syslog 等),但 docker 没有额外的进程。

我猜测在同一主机下运行多个 memcached docker 容器是没有意义的

这要看情况。在某些情况下,您希望将 RAM 分成多个包,而不是全局的。 (即想象一下,如果您想将 20% 的缓存用于缓存用户,40% 的缓存用于缓存文件等)

此外,大多数分片方案很难扩展,因此人们通常从许多“虚拟”分片开始,然后在需要时扩展到物理盒子。因此,您可以从了解大约 20 个 memcached 实例(根据对象 ID 选择)的应用程序开始。起初,所有 20 个服务器都运行在一台物理服务器上。但后来您将它们拆分到 2 台服务器 (10/10),然后再拆分到 5 台服务器 (4/4/4/4),最后拆分到 20 台物理服务器(每台 1 个内存缓存)。因此,只需移动虚拟机而不更改应用程序,您就可以将应用程序扩展 20 倍。

唯一真正的优势是在 Docker 容器中“旋转”memcached 堆栈与通过 VM 的 Memcached 相比的速度优势。这是正确的吗?

不,这只是一个小小的附带好处。见上文。

另外,如何设置docker容器中memcached使用的内存?

docker run
命令中,只需使用
-m

如果一台主机下有两个或多个带有 Memcached 的 docker 容器,这将如何工作? (我再次假设两个或更多没有意义)。

同样的方式。如果您没有设置内存限制,那么就像在主机上运行 2 个 memcached 进程一样。 (如果其中一个填满了内存,两者都会出现内存不足错误。)


2
投票

1 - 好处如您所描述。您可以将 memcached 实例(和配置)沙箱到单独的容器中,以便可以在给定主机上运行多个容器。此外,将 memcached 实例移动到另一台主机非常简单,在最坏的情况下只需要更新应用程序配置。

2 -

docker run -m <inbytes> <memcached-image>

将限制 memcached 容器可以消耗的内存量。您可以在单个主机下运行任意数量的这些程序。

    


0
投票
网站

上有图片的富有洞察力的解释。


0
投票
在此处查看示例 yml

,您可以在其中使用 GUI Web 应用程序来查看/修改缓存项目

© www.soinside.com 2019 - 2024. All rights reserved.