2013-04-18 15 views

risposta

54

Memoria/CPU

Docker ora supporta più risorse possibilità di attribuzione:

  • condivisioni CPU, tramite -c flag
  • Limite di memoria, via -m flag
  • CPU core specifici, tramite flag --cpuset

Dai un'occhiata a docker run --help per maggiori dettagli.

Se si utilizza backend LXC (docker -d --exec-driver=lxc), più sottili sistemi di assegnazione delle risorse grana può essere specificato, es .:

docker run --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1"\ 
      --lxc-conf="lxc.cgroup.cpu.shares = 1234" 

bagagli

limitazione di archiviazione è un po 'più complicato in questo momento. Si prega di fare riferimento ai seguenti link per maggiori dettagli:

3

Come noto, è possibile superare solo il limite di memoria (ad esempio Limite di 5 MB: finestra mobile run -m = 5242880 ...). Ma i ragazzi di docker.io hanno pianificato di aggiungere limiti alla CPU.

+0

Si può provare a cercare per parole chiave: "quota disco AUFS" (dal momento che la finestra mobile usa il filesystem AUFS), "LXC cpu limit" anche –

+0

okay, spero che aggiungano presto dei limiti. Sarà bello usare lxc senza dover usare lxc direttamente. – rmc

8

È ora possibile assegnare un numero di azioni della CPU ad un contenitore con l'opzione -c come descritto here

1

vedono questo succo: https://gist.github.com/afolarin/15d12a476e40c173bf5f

1) È un dare una quota relativa del cpus con --cpu-share = 'relative-number'

2) ora è possibile porre limiti duri su CPU:

--cpuset="" 
specify which cpus by numeric id, 0=first, n=nth cpu. specify by contiguous "1-5" or discontiguous "1,3,5" ranges. 

se si utilizza LXC al posto del libcontainer di default allora si può anche specificare questo in:

--lxc-conf=[]    
(lxc exec-driver only) Add custom lxc options --lxc-conf="lxc.cgroup.cpuset.cpus = 0,1" 

RAM:

-m, --memory=""   Memory limit (format: <number><optional unit>, where unit = b, k, m or g) 
2

Nota: PR 15078 sta attuando (Dic. 2015) supporto per la modifica delle risorse sia per il arrestato che per il contenitore (eventualmente finestra mobile 1.10 ou 1.11)

Abbiamo deciso di consentire di impostare ciò che abbiamo chiamato risorse, che consiste di cose cgroup per ora, quindi il seguente PR #18073.
Gli unici elementi mutabili di un contenitore si trovano in HostConfig e precisamente in Risorse (vedere struct).

resources := runconfig.Resources{ 
     BlkioWeight:  *flBlkioWeight, 
     CpusetCpus:  *flCpusetCpus, 
     CpusetMems:  *flCpusetMems, 
     CPUShares:   *flCPUShares, 
     Memory:   flMemory, 
     MemoryReservation: memoryReservation, 
     MemorySwap:  memorySwap, 
     KernelMemory:  kernelMemory, 
     CPUPeriod:   *flCPUPeriod, 
     CPUQuota:   *flCPUQuota, 
    } 
  • Il comando dovrebbe essere set.
  • Le modifiche consentite vengono passate come flag: ad es. --memory=1Gb --cpushare=… (come fa questa PR).
  • C'è un flag per ogni attributo della struttura Resources (e non più, non di meno).

Nota che apportare modifiche tramite docker set dovrebbero persistere.
Vale a dire, tali modifiche sarebbero permanenti (aggiornati in JSON del contenitore)

2

Solo una nota su -m/--memory -

Se si sta impostando il limite di memoria, ma il contenitore non sta assegnando la quantità di memoria che si sta provare a prenotare, andare nelle preferenze e regolare la memoria riservata all'app mobile nel suo complesso.

mi sono imbattuto in questo 'problema' su OS X e non era sicuro del perché il mio contenitore veniva limitata a ~ 2G quando ero specificando --memory=8g

Problemi correlati