为什么Docker构建命令在Elastic Beanstalk中运行得如此之慢?

时间:2014-09-21 20:51:31

标签: amazon-web-services architecture docker elastic-beanstalk sysadmin

EB抱怨说我的构建已超时,所以我ssh进入一个实例并决定自己运行docker build来看看发生了什么。每一步,即使像mkdir这样简单的事情也需要很长时间才能运行。即使WORKDIR在执行前至少停顿一两分钟。

在我的本地机器上,这些都是即时的。发生了什么事?

2 个答案:

答案 0 :(得分:8)

此处与在AWS上运行的Ubuntu计算机相同。事实证明解决方案的关键是从devicemapper切换到aufs存储后端。

首先,运行以下命令以确定您当前使用的存储后端:

docker info | grep Storage

如果说devicemapper,你可能会找到缓慢的原因。

以下是从here取得的在Ubuntu中切换到aufs后端的提示:

  1. sudo apt-get install -y -q linux-image-extra-$(uname -r)
  2. sudo service docker restart
  3. 请注意,您必须重建所有现有的图像/容器,因为切换到aufs时将会擦除它们。

答案 1 :(得分:0)

很抱歉知道您正面临这个问题。 Elastic Beanstalk环境创建涉及创建大量资源,如自动扩展组,EC2实例,安全组,Elastic Load Balancer等。在您的beanstalk实例上安装该软件之后。我假设你只是谈论beanstalk上软件安装(docker build)的缓慢。

如果你只是运行mkdir,那应该不会很慢。它应该相当快。

但是,如果您认为整个docker build运行速度非常慢,可能是因为IO密集型操作。

您可以尝试使用EBS provisioned IOPs with Elastic Beanstalk。 阅读有关SSD实例here的更多信息。

您是否可以尝试使用SSD实例启动新环境并查看docker build是否仍然很慢?如果您可以显示一个需要很长时间才能构建的示例dockerfile,我可以尝试一下。