为什么Docker构build命令在Elastic Beanstalk中运行速度如此之慢?

EB抱怨我的构build超时,所以我进入一个实例,决定运行docker docker build自己,看看发生了什么。 每一步,甚至像一个mkdir一样简单,需要很长时间才能运行。 即使是一个WORKDIR在执行之前至less停顿一两分钟。

在我的本地机器上,这些是即时的。 到底是怎么回事?

在AWS上运行的Ubuntu机器也是这个问题。 原来解决scheme的关键是从devicemapper切换到aufs存储后端。

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

docker info | grep Storage

如果它说devicemapper ,你可能find了缓慢的原因。

下面是从Ubuntu切换到aufs后端的prodecure:

  1. sudo apt-get install -y -q linux-image-extra-$(uname -r)
  2. sudo service docker restart

请注意,您将不得不重build所有现有的图像/容器,因为它们将在切换到aufs时被擦除。

对不起,知道你正面临着这个问题。 创buildElastic Beanstalk环境需要创build大量资源,例如自动调整组,EC2实例,安全组,Elastic Load Balancer等。然后,将该软件安装到您的Beanstalk实例上。 我假设你只是在谈豆浆的软件安装(docker构build)的缓慢。

如果你只是运行不应该很慢的mkdir。 这应该是相当快的。

但是,如果你认为docker build的整体运行速度非常慢,这可能是由于IO密集型操作造成的。

您可以尝试的一件事是使用EBSconfiguration的IOP与Elastic Beanstalk 。 在这里阅读更多关于SSD实例。

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