启动adhoc docker实例:是否build议每个请求启动一个docker实例?

是否build议每个请求启动一个docker实例?

我有我的Web服务器上运行lighttpd或Nginx作为反向代理。 我支持一些使用率很低的子域。 当子域的请求到达时,我想启动docker实例。 最好我想dynamic启动它们,以便如果有多个用户到达,我将启动一个用户…和/或共享实例(由configuration决定)

本来我说这个应该适合低流量的网站,但经过进一步的思考,不,这是一个坏主意。

每次启动Docker容器时,它都会为图像添加一个读写层。 即使写入的数据非常少,该层也存在,并且每个请求都会生成一个。 当一个用户访问一个网站时,渲染页面会产生10到1000的请求,对于CSS,对于JavaScript,对于每个图像,对于字体,对于AJAX来说,每一个都会创建这些读写层。

现在,读写层没有自动清理,即使在Docker容器退出之后,它们仍然存在。 默认情况下,什么都不会丢失。

所以,即使是一个单一的低流量网站,你也会发现你的磁盘使用量会随着时间的推移而稳步增长。 你可以添加自己的自动清理。

那么还有第二个问题:上传到网站的任何内容都不能用于任何其他请求,除非它被写入到某个不在容器外的共享存储中。 使用S3或单独的持久数据库服务很容易,但是它确实开始显示“每个请求一个新的Docker容器”方法的弱点。 如果你将有一些持久的服务,为什么不使Docker容器更持久,并且运行更长久?