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

Kev*_*ang 6 architecture sysadmin amazon-web-services docker amazon-elastic-beanstalk

EB抱怨说我的构建已超时,所以我ssh到一个实例并决定自己跑去docker build看看发生了什么.每一步,甚至像一个简单的事情mkdir需要很长时间才能运行.WORKDIR在执行之前,即使是一个或两分钟的摊位.

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

uri*_*ish 8

与在AWS上运行的Ubuntu机器相同的问题.原来解决方案的关键是从devicemapper切换到aufs存储后端.

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

docker info | grep Storage

如果它说devicemapper,你可能找到了缓慢的原因.

以下是在Ubuntu中切换到aufs后端的提示,取自此处:

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

请注意,您必须重建所有现有的图像/容器,因为当您切换到aufs时它们将被擦除.

  • 惊人.它现在快了一千倍,你节省了我的一天. (2认同)

Roh*_*nga 0

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

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

但是,如果您认为 docker 构建总体运行速度非常慢,则可能是由于 IO 密集型操作造成的。

您可以尝试的一件事是将EBS 预置的 IOP 与 Elastic Beanstalk结合使用。在此处阅读有关 SSD 实例的更多信息。

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