在群上更新docker容器?

时间:2016-09-19 20:50:13

标签: docker docker-swarm

docker swarm(1.12 +)如何使用容器更新?例如:

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

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

  • 将容器重新安排到有6 GB空闲的新节点吗?
  • 无法更新?
  • 像以前一样继续使用这两个容器吗?

我自己没弄明白。

1 个答案:

答案 0 :(得分:1)

假设您正在使用Swarm上的服务并明确地为每个容器保留内存,那么您的服务将保留在“已分配的”内容中。如果您尝试更新它以保留比可用内存更多的内存,则说明状态。

例如:docker service create --replicas 1 --name nginx --reserve-memory 256M nginx将成功并创建一个容器,其中保留256MB容量(如果您的Swarm上有容量)。然后运行docker service update --reserve-memory 300G nginx,Docker将:

  1. 关闭现有容器
  2. 尝试使用所请求的资源安排新容器
  3. 如果您没有300GB的节点可用,则无法安排更新的服务,它将处于Allocated状态,因此您的服务无法正常运行在这一点上。

    调度程序会继续检查,因此如果资源确实可用,或者如果您运行具有较低预留量的新update命令,则它将按请求创建容器。