另外,如何设置docker容器中memcached使用的内存?如果在一个主机下有两个或更多具有Memcached的docker容器,这将如何工作? (我再假设两个或两个以上没有意义).
解决方法
I’m wondering why one would want this versus a VM configured with Memcached?
安全性:如果有人破坏了memcached和特洛伊木马的文件系统,那没关系 – 当你开始一个新的memchached时,文件系统会被丢弃.
隔离:您可以对每个容器进行硬限制,以防止它使用太多RAM.
标准化:目前,每个应用程序/数据库/缓存/负载均衡器必须记录要安装的内容,配置内容和运行内容.没有标准(并且没有木偶,厨师等工具).但是这些工具非常复杂,并非真正独立于操作系统(尽管他们声称),并且从开发到部署都具有相同的复杂性.
使用docker,一切都只是一个以BLAH运行的容器.如果你的应用程序有5层,你只需要运行5个容器,顶部有一点编排.开发人员永远不需要“查看容器”,除非他们在该层开发.
资源:您可以在普通的PC上启动1000个docker容器,但是您可能无法启动100个VM.限制是cpu和RAM. Docker容器只是“增强型”chroot中的进程.在VM上,有许多后台进程(cron,logrotation,syslog等),但是docker没有额外的进程.
I’m guessing that it would make no sense to have more than one memcached docker container running under the same host
这取决于.在某些情况下,您希望将RAM拆分为parcel而不是全局. (想象一下,如果你想将20%的缓存用于缓存用户,将40%的缓存用于缓存文件等)
此外,大多数分片方案很难扩展,因此人们通常从许多“虚拟”分片开始,然后在需要时扩展到物理盒.因此,您可以从您的应用程序开始,了解大约20个memcached实例(根据对象ID选择).首先,所有20个在一台物理服务器上运行.但是后来你将它们分成2台服务器(10/10),然后分成5台服务器(4/4/4/4),最后分成20台物理服务器(每台1台memcached).因此,您可以通过移动虚拟机而不是更改应用来扩展您的应用20倍.
the only real advantage is speed advantage of “spinning up” the memcached stack in a docker container vs Memcached via a VM. Is this correct?
不,这只是一个小小的好处.往上看.
Also,how does one set the memory to be used by memcached in the docker container?
在docker run命令中,只需使用-m.
How would this work if there were two or more docker containers with Memcached under one host? (I’m assuming again that two or more would not make sense).
同样的方式.如果没有设置内存限制,那就像在主机上运行2个memcached进程一样. (如果填满内存,两者都会出现内存错误.)