2016-09-19 102 views
0

docker swarm(1.12+)如何與容器更新?例如:在羣集上更新docker容器?

在一個節點上,我有2個容器,都使用4GB的內存,總數是8GB,這等於節點大小。

如果我將一個容器的內存大小更改爲例如6 GB? Will Swarm:

  • reschedule容器重新計劃到有6 GB空閒的新節點?
  • 無法更新?
  • 像以前一樣繼續使用兩個容器嗎?

我無法自己弄清楚。

回答

1

假設您在Swarm上使用服務並明確地爲每個容器保留內存,如果嘗試更新它以保留比可用內存更多的內存,服務將堅持「已分配」狀態。

例如:docker service create --replicas 1 --name nginx --reserve-memory 256M nginx將成功並創建一個容器,其中256MB爲其預留(如果您的Swarm上有容量)。然後運行docker service update --reserve-memory 300G nginx和碼頭工人會:

  1. 關閉現有容器
  2. 嘗試與所請求的資源

安排一個新的容器如果你沒有與300GB可用的節點,更新服務無法安排,它將處於Allocated狀態,因此您的服務在此時不會運行。

調度程序會繼續檢查,所以如果資源確實可用,或者如果運行新的帶有較低預留的update命令,那麼它將根據請求創建容器。

相關問題