From 10c724553575a638479977664b0ee5b7e312498b Mon Sep 17 00:00:00 2001 From: Rodolfo Carvalho Date: Thu, 28 Jan 2016 13:58:25 +0100 Subject: [PATCH] Limit container CPU and memory --- pkg/build/builder/common.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/pkg/build/builder/common.go b/pkg/build/builder/common.go index 10c0f9b5b904..9b079b887dc5 100644 --- a/pkg/build/builder/common.go +++ b/pkg/build/builder/common.go @@ -139,6 +139,11 @@ func execPostCommitHook(client DockerClient, postCommitSpec api.BuildPostCommitS args = append([]string{script, command[0]}, args...) } + limits, err := GetCGroupLimits() + if err != nil { + return fmt.Errorf("read cgroup limits: %v", err) + } + return dockerRun(client, docker.CreateContainerOptions{ Name: containerName, Config: &docker.Config{ @@ -146,6 +151,14 @@ func execPostCommitHook(client DockerClient, postCommitSpec api.BuildPostCommitS Entrypoint: command, Cmd: args, }, + HostConfig: &docker.HostConfig{ + // Limit container's resource allocation. + CPUShares: limits.CPUShares, + CPUPeriod: limits.CPUPeriod, + CPUQuota: limits.CPUQuota, + Memory: limits.MemoryLimitBytes, + MemorySwap: limits.MemorySwap, + }, }, docker.LogsOptions{ // Stream logs to stdout and stderr. OutputStream: os.Stdout,