如何加速Docker容器的启动时间?

我是使用Docker容器化应用程序的新手。 我可以部署一个包含war文件的容器。 这场战争基本上是一个JAVA web应用程序/ servlet,它在收到最终用户的请求后发回一个video文件。 使用docker的应用程序部署是成功的,应用程序工作正常。 不过,我有一些关于启动时间的问题。

从我通过命令docker run -it -d -p 8080:8080 surrogate创build容器的那一刻起,容器docker run -it -d -p 8080:8080 surrogate需要大约5-6分钟,这意味着容器生命周期的前5-6分钟,它没有响应最终用户的请求,之后,它工作正常。 有什么办法来加速这个启动时间?

Dockerfile包括:

 FROM tomcat:7.0.72-jre7 ADD surrogate-V1.war /usr/local/tomcat/webapps/ CMD ["catalina.sh", "run"] WORKDIR "/usr/local/tomcat/" RUN wget https://www.dropbox.com/s/1r8awydc05ra8wh/a.mp4?dl=1 RUN cp a.mp4\?dl\=1 lego.mp4 

(代表OP发布)

首先在“docker run”命令中删除-d,看看后台正在发生什么。 我注意到战争部署时间太长了(大约15-20分钟!!!)

在我的情况下,原因是Dockerfile中的tomcat版本与我以WAR的forms导出Web应用程序的环境中的Tomcat版本不同。 (如何检查JRE版本:在terminalinput: JAVA -version ,检查Tomcat版本:从eclipse中导出时,显示版本)。

在我的Dockerfile中,我有:

 FROM tomcat:7.0.72-jre7 

我把它改成:

 FROM tomcat:6.0-jre7 

现在只需要不到10秒钟!

简而言之,确保Dockerfile中的Tomcat版本和JRE版本与将Java Web应用程序作为WAR导出的环境相同。