为什么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:
-
sudo apt-get install -y -q linux-image-extra-$(uname -r)
-
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,我可以试试看。