tag run imagenes hub example docker

docker - run - ¿Cómo configuro los recursos asignados a un contenedor usando el acoplador?



download docker image (6)

Ahora puede asignar un número de recursos compartidos de CPU a un contenedor con la opción -c como se describe here

Como el título de esta pregunta sugiere, quiero establecer el uso máximo de disco / memoria y CPU para un contenedor usando la ventana acoplable (docker.io).

¿Hay alguna manera de hacer esto usando solo Docker?


Nota: PR 15078 está implementando (diciembre de 2015) soporte para cambiar recursos tanto para contenedor parado como para contenedor (posiblemente acoplador 1.10 o 1.11)

Decidimos permitir establecer lo que llamamos recursos, que consiste en thingg cgroup por ahora, de ahí el siguiente PR # 18073 .
Los únicos elementos mutables permitidos de un contenedor están en HostConfig y precisamente en Recursos (ver la struct ).

resources := runconfig.Resources{ BlkioWeight: *flBlkioWeight, CpusetCpus: *flCpusetCpus, CpusetMems: *flCpusetMems, CPUShares: *flCPUShares, Memory: flMemory, MemoryReservation: memoryReservation, MemorySwap: memorySwap, KernelMemory: kernelMemory, CPUPeriod: *flCPUPeriod, CPUQuota: *flCPUQuota, }

  • El comando debe set .
  • Los cambios permitidos se pasan como indicadores: por ejemplo, --memory=1Gb --cpushare=… (como lo hace este PR).
  • Hay un indicador para cada atributo de la estructura de Resources (y no más, no menos).

Tenga en cuenta que la realización de cambios a través del docker set debería persistir.
Es decir, esos cambios serían permanentes (actualizados en el JSON del contenedor)


Puede pasar solo el límite de memoria (es decir, límite de 5 MB: ejecución del acoplador -m = 5242880 ... imagen) como sé. Pero chicos de docker.io planearon agregar límites de CPU.


Solo una nota sobre -m / --memory -

Si está configurando el límite de la memoria pero el contenedor no está asignando la cantidad de memoria que está tratando de reservar, acceda a las preferencias y ajuste la memoria que se reserva para la aplicación del acoplador como un todo.

Me encontré con este ''problema'' en OS X y no estaba seguro de por qué mi contenedor se estaba limitando a ~ 2G cuando estaba especificando --memory=8g


vea esta esencia: https://gist.github.com/afolarin/15d12a476e40c173bf5f

1) Usted da una parte relativa de la CPU con --cpu-share = ''relative-number''

2) ahora puedes poner límites duros a la CPU:

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

si usa LXC en lugar del libcontainer predeterminado, también puede especificar esto en:

--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)


Memoria / CPU

Docker ahora admite más opciones de asignación de recursos:

  • Cuotas de la CPU, a través de la bandera -c
  • Límite de memoria, a través de -m indicador
  • Núcleos de CPU específicos, a través de --cpuset flag

Echa un vistazo a docker run --help para más detalles.

Si utiliza lxc backend ( docker -d --exec-driver=lxc ), se pueden especificar esquemas de asignación de recursos más finos, por ejemplo:

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

Almacenamiento

Limitar el almacenamiento es un poco más complicado en este momento. Por favor, consulte los siguientes enlaces para más detalles: