在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将会:
- closures现有的容器
- 尝试安排一个新的容器与请求的资源
如果您没有可用的300GB节点,则更新后的服务将无法安排,并且会处于“已Allocated
状态,因此您的服务在此时不会运行。
调度程序不断检查,所以如果资源确实可用,或者如果运行一个新的update
命令,并且保留时间较短,那么它将根据请求创build容器。