Docker Update: como actualizar CPU y Memoria asignados a un contenedor

En este sencillo articulo mostrare como actualizar los recursos asignados a un contenedor en Docker que se encuentra creado e iniciado.

Como muchos sabrán en Docker podemos limitarle cuanta RAM y CPU puede utilizar, pero para llevar a cabo esta operación es necesario actualizar la versión del Docker engine a partir de la v1.10.0 que es donde se encuentra este parametro.

Como ejemplo crearemos un contenedor con limitantes tanto en CPU como en RAM, por lo que primero ejecutaremos:

$ docker run -it --memory="512M" --cpu-shares 1024 --name container01 zokeber/centos /bin/sh

Con el parámetro  --cpu-shares 1024 le indicamos que use el 50% del CPU y con --memory="512M" solo 512M de RAM. Verificamos que estos recursos asignados son los correctos, con docker inspect:

##Verificamos la RAM:
$ docker inspect -f "{{ .HostConfig.Memory }}" container01
536870912

##Verificamos CPU:
docker inspect -f "{{ .HostConfig.CpuShares }}" container02
1024

Ahora bien, para asignarles mas RAM y que solo utilice el 25% de la CPU total, ejecutamos con docker update lo siguiente:

$ docker update --memory="1024M" --cpu-shares 512 container01

Verificamos nuevamente que los cambios son los asignados:

##Verificamos la RAM:
$ docker inspect -f "{{ .HostConfig.Memory }}" container01
1073741824

##Verificamos CPU:
docker inspect -f "{{ .HostConfig.CpuShares }}" container01
512

En cambio, si queremos limitar solamente la RAM a 512M, ejecutamos:

$ docker update --memory="512M" container01

Verificamos que el cambio a los recursos es el correcto:

##Verificamos la RAM:
$ docker inspect -f "{{ .HostConfig.Memory }}" container01
536870912

Hasta aqui este sencillo articulo, pueden encontrar mas información en este post de Marek Goldmann titulado Resource management in Docker y este otro sobre Dynamic CPU Allocation . Cualquier duda que tengas, dejala en la caja de comentarios.