服务命令的–limit-xxx选项是否限制每个服务或每个容器的资源?

docker 1.12的service create命令有两个选项来限制cpu和内存,如下所示:

  --limit-cpu value Limit CPUs (default 0.000) --limit-memory value Limit Memory (default 0 B) 

他们是否限制每个服务或每个容器的资源?

你可以在api / client / service / update.go中看到

 taskResources().Limits = &swarm.Resources{} updateInt64Value(flagLimitCPU, &task.Resources.Limits.NanoCPUs) 

--limit-cpu在提交12a00e6中引入了--limit-cpu

考虑到swarmkit / manager / scheduler / nodeinfo.go在删除任务时具有以下代码:

 nodeInfo.AvailableResources.NanoCPUs += reservations.NanoCPUs 

看来限制cpu是由服务pipe理的每个节点。