我的网络应用程序使用graphicsmagick来调整图像大小。调整图像大小通常需要大约500毫秒。为了简化设置并将其关闭,我想将graphicsmagick
调用移动到docker容器中并使用docker run
来执行它。但是,在容器内运行会增加大约300毫秒,这对我的用例来说是不可接受的。
为了减少启动容器的开销,可以运行无休止的程序(如docker run tail -f /dev/null
),然后使用docker exec
执行对正在运行的容器内的graphicsmagick
的实际调用。然而,这似乎是一个大黑客。
如何用docker“正确”解决这个问题,或者它在这里不合适?
答案 0 :(得分:0)
最好的方法是:
但是如果你喜欢更多的码头工作方式,那么最好的可见方法是(例如下面):
启动“守护程序”:
docker run --name ubuntu -d -v /path/to/host/folder:/path/to/guest/folder ubuntu:14.04 sleep infinity
执行命令:
docker exec ubuntu <any needed command>
其中:
“ubuntu” - 容器名称
-d - 取消附加容器
-v - mount volume host - &gt;容器
睡眠无穷大 - 什么都不做,用作入口点,并且比读取操作更好。
如果使用文件,请使用已安装的卷,如果不使用 - 请不要安装卷,只使用管道。
答案 1 :(得分:0)
这听起来像是微服务的一个很好的候选者,一个长期存在的服务器(用您选择的语言实现)在端口上监听,以调整使用graphicsmagick的请求。
使用docker exec
可能是可能的,但实际上并不打算以这种方式使用。切断中间人并直接与你的容器交谈。