Set CPU and memory in Create() and Start().

This allows for backwards and forwards compatability since old Docker
versions expect it in Create() and newer ones do so in Start().

Fixes #8358
This commit is contained in:
Victor Marmol 2015-05-18 23:53:41 -07:00
parent eb4d90f109
commit deaa0e569d

View File

@ -573,6 +573,8 @@ func (dm *DockerManager) runContainer(
labels[kubernetesContainerLabel] = container.Name labels[kubernetesContainerLabel] = container.Name
} }
} }
memoryLimit := container.Resources.Limits.Memory().Value()
cpuShares := milliCPUToShares(container.Resources.Limits.Cpu().MilliValue())
dockerOpts := docker.CreateContainerOptions{ dockerOpts := docker.CreateContainerOptions{
Name: BuildDockerName(dockerName, container), Name: BuildDockerName(dockerName, container),
Config: &docker.Config{ Config: &docker.Config{
@ -580,10 +582,11 @@ func (dm *DockerManager) runContainer(
ExposedPorts: exposedPorts, ExposedPorts: exposedPorts,
Hostname: containerHostname, Hostname: containerHostname,
Image: container.Image, Image: container.Image,
Memory: container.Resources.Limits.Memory().Value(), // Memory and CPU are set here for older versions of Docker (pre-1.6).
CPUShares: milliCPUToShares(container.Resources.Limits.Cpu().MilliValue()), Memory: memoryLimit,
WorkingDir: container.WorkingDir, CPUShares: cpuShares,
Labels: labels, WorkingDir: container.WorkingDir,
Labels: labels,
}, },
} }
@ -630,6 +633,9 @@ func (dm *DockerManager) runContainer(
Binds: binds, Binds: binds,
NetworkMode: netMode, NetworkMode: netMode,
IpcMode: ipcMode, IpcMode: ipcMode,
// Memory and CPU are set here for newer versions of Docker (1.6+).
Memory: memoryLimit,
CPUShares: cpuShares,
} }
if len(opts.DNS) > 0 { if len(opts.DNS) > 0 {
hc.DNS = opts.DNS hc.DNS = opts.DNS