在swarm上更新docker容器?

docker群(1.12+)如何与容器更新一起工作 ? 例:

在一个节点上,我有2个容器,都使用4GB的内存,总数是8GB,这等于节点大小。

如果我将一个容器的内存大小更改为例如6 GB,该怎么办? 会群:

  • 将容器重新计划到有6 GB空闲的新节点?
  • 无法更新?
  • 继续像以前一样工作两个容器?

我无法自己弄清楚。

假设你在Swarm上使用服务,并明确地预留了每个容器的内存,如果你尝试更新它来保留比你有更多的内存,你的服务将会保持“分配”状态。

例如: docker service create --replicas 1 --name nginx --reserve-memory 256M nginx将会成功,并为其创build一个容量为256MB的容器(如果你的容量是Swarm的话)。 然后运行docker service update --reserve-memory 300G nginx和Docker将会:

  1. closures现有的容器
  2. 尝试安排一个新的容器与请求的资源

如果您没有可用的300GB节点,则更新后的服务将无法安排,并且会处于“已Allocated状态,因此您的服务在此时不会运行。

调度程序不断检查,所以如果资源确实可用,或者如果运行一个新的update命令,并且保留时间较短,那么它将根据请求创build容器。