正在更新 swarm 上的 docker 个容器?

Updating docker containers on swarm?

docker swarm (1.12+) 如何与容器 updates 一起工作?示例:

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

如果我将一个容器的内存大小更改为例如6GB?会蜂拥而至:

我自己想不通

假设您在 Swarm 上使用服务并明确为每个容器保留内存,如果您尝试更新它以保留比可用内存更多的内存,您的服务将停留在 'allocated' 状态。

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

  1. 关闭现有容器
  2. 尝试用请求的资源安排一个新容器

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

调度程序会不断检查,因此如果资源确实可用,或者如果您 运行 一个新的 update 命令具有较低的保留,那么它将根据请求创建容器。