是否建议每个请求启动一个docker实例?
我在我的网络服务器上运行lighttpd或Nginx作为反向代理。我支持一些使用率很低的子域名。当子域的请求到达时,我想启动docker实例。我希望动态启动它们,这样如果有多个用户到达我将为每个用户启动一个...和/或共享实例(由配置确定)
答案 0 :(得分:4)
最初我说这应该适用于低流量网站,但经过进一步考虑,不,这是一个坏主意。
每次启动Docker容器时,它都会向图像添加读写层。即使写入的数据非常少,该层也存在,每个请求都会生成一个。当单个用户访问网站时,呈现页面将生成10到1000的请求,CSS,javascript,每个图像,字体,AJAX,并且每个都会创建那些读写层。
现在没有自动清理读写层 - 即使在Docker容器退出后它们仍然存在。默认情况下,不会丢失任何内容。
因此,即使对于单个低流量站点,您也会发现随着时间的推移,您的磁盘使用率会稳步增长。您可以添加自己的自动清理。
然后还有第二个问题:除非将其写入某些容器外共享存储,否则上传到网站的任何内容都无法用于任何其他请求。使用S3或单独的持久数据库服务这很容易,但它确实开始显示“每个请求一个新的Docker容器”方法的弱点。如果您将拥有一些持久性服务,为什么不让Docker容器更持久并运行更长时间呢?