【问题标题】:How to accelerate Docker container boot time?如何加快 Docker 容器启动时间?
【发布时间】:2017-05-17 00:21:25
【问题描述】:

我是使用 Docker 容器化应用程序的新手。我可以部署一个包含战争文件的容器。战争基本上是一个 JAVA Web 应用程序/servlet,它在收到最终用户的请求后发回一个视频文件。使用 docker 部署应用程序是成功的,应用程序运行良好。但是我有一些关于它的启动时间的问题。

从我通过点击命令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 

【问题讨论】:

  • 在运行docker run 时去掉-d 选项。检查日志并查看它正在尝试执行的操作,这可能需要 4~5 分钟。
  • 您的问题可能与这篇博文有关:blog.georgovassilis.com/2015/09/13/…
  • 谢谢塞缪尔。我刚刚删除了 -d 现在只需要 8 秒!!!!!!
  • 不确定-d 是如何解决您的问题的。我之前的意图是让你的容器不在后台运行,这样你就可以看到日志,这会告诉你花费这么长时间的步骤。顺便说一句,您使用 Dockerfile 来构建映像,然后 docker run 将映像转换为容器的实例。从那里删除东西只会加快构建步骤。
  • 你是对的塞缪尔,那 -d 并没有解决我的问题。事实上,今天我运行了 docker 命令,响应最终用户请求需要很长时间。尝试 -d,表明以下步骤(WAR 部署)非常耗时:“May 18, 2017 8:07:56 PM org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive /usr/local/ tomcat/webapps/surrogate-V1.war”我什至尝试了您建议的链接中的解决方案,但没有成功。你有什么建议吗?

标签: java docker containers war


【解决方案1】:

(代表 OP 发布).

首先去掉“docker run”命令中的-d,看看后台发生了什么。我注意到战争部署阶段需要很长时间(大约 15-20 分钟!!!)

在我的情况下,原因是 Dockerfile 中的 tomcat 版本与我将 Web 应用程序导出为 WAR 的环境中的 Tomcat 版本不同。 (如何查看JRE版本:在终端输入:JAVA -version,查看Tomcat版本:来自eclipse,导出时显示版本)。

在 Dockerfile 中,我有:

FROM tomcat:7.0.72-jre7

我改成:

FROM tomcat:6.0-jre7

现在只需不到 10 秒!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2015-12-13
    • 2015-08-25
    • 2016-12-16
    • 2015-08-07
    • 2014-09-24
    • 1970-01-01
    相关资源
    最近更新 更多