EB抱怨我的構建超時,所以我進入一個實例並決定自己運行docker build
以查看發生了什麼。每一步,甚至像mkdir
這樣簡單的事情都需要很長時間才能運行。即使是WORKDIR
在執行前至少暫停一兩分鐘。爲什麼Docker構建命令在Elastic Beanstalk中運行速度如此之慢?
在我的本地機器上,這些是即時的。到底是怎麼回事?
EB抱怨我的構建超時,所以我進入一個實例並決定自己運行docker build
以查看發生了什麼。每一步,甚至像mkdir
這樣簡單的事情都需要很長時間才能運行。即使是WORKDIR
在執行前至少暫停一兩分鐘。爲什麼Docker構建命令在Elastic Beanstalk中運行速度如此之慢?
在我的本地機器上,這些是即時的。到底是怎麼回事?
對不起,您知道您正在面臨此問題。 Elastic Beanstalk環境創建包括創建大量資源,如自動調節組,EC2實例,安全組,Elastic Load Balancer等。在該軟件安裝到您的Beanstalk實例上之後。我假設你只是在討論beanstalk上軟件安裝(docker build)的緩慢性。
如果你只是運行mkdir應該不會很慢。它應該是相當快的。
但是,如果您認爲Docker構建整體運行速度很慢,可能是由於IO密集型操作造成的。
你可以嘗試的一件事是使用EBS provisioned IOPs with Elastic Beanstalk。 瞭解更多關於SSD實例here。
你可以嘗試啓動一個新的環境與SSD實例,看看碼頭建設是否仍然緩慢?如果你可以顯示一個需要很長時間構建的示例dockerfile,我可以嘗試一下。
與在AWS上運行的Ubuntu計算機相同的問題。原來解決方案的關鍵是從devicemapper切換到aufs存儲後端。
首先,運行下面的命令找出哪些存儲後端你目前使用的:
docker info | grep Storage
如果說devicemapper
,你可能發現了緩慢的原因。
下面是切換到aufs的後端在Ubuntu,從here採取prodecure:
sudo apt-get install -y -q linux-image-extra-$(uname -r)
sudo service docker restart
注意,您必須重建所有現有的圖像/容器,因爲它們將在您切換到aufs時被擦除。
令人驚歎。它現在快了上千倍,你節省了我的一天。 – 2016-01-19 18:09:30
注意:基於Amazon Linux的AMI使用yum命令而不是apt-get。 http://stackoverflow.com/questions/14045262/how-to-fix-apt-get-command-not-found-on-aws-ec2 – 2016-05-20 11:17:09
什麼是AWS Linux的軟件包名稱? – noli 2016-06-30 00:32:43
無論哪種方式,一個簡單的'RUN mkdir〜/ asd'需要很長時間。這應該與EBS引導相關的東西無關。我懷疑FS是否真的是阻塞因素,因爲我可以運行apt-get,並且它可以很快獲取東西。 – 2014-09-21 22:56:40
此外,您的dockerfile包含的基礎碼頭圖像需要下載(可能很容易爲幾百個100MB)。這需要首次在每個EC2實例上下載。你認爲這是造成最初的緩慢嗎?您可以運行'docker images'來查看當前正在下載的圖像。 – 2014-09-22 04:34:53
這些是RUN命令。初始圖像下載完成後會發生這種情況。 – 2014-09-22 07:25:09