Crear un contenedor con límites iniciales de recursos
En este paso, aprenderás cómo crear un contenedor Docker y establecer límites iniciales de recursos para CPU y memoria. Los límites de recursos son importantes para evitar que un solo contenedor consuma todos los recursos disponibles en la máquina host, lo que podría afectar el rendimiento de otros contenedores y del propio host.
Primero, descarguemos la imagen ubuntu
desde Docker Hub. Esta imagen servirá como base para nuestro contenedor.
docker pull ubuntu:latest
Deberías ver una salida que indica que la imagen se está descargando y extrayendo.
Ahora, creemos un contenedor llamado my-limited-container
con límites específicos de recursos. Usaremos el comando docker run
con las banderas --cpus
y --memory
.
La bandera --cpus
limita la cantidad de recursos de CPU que el contenedor puede usar. El valor es un número decimal que representa la cantidad de núcleos de CPU. Por ejemplo, --cpus 0.5
significa que el contenedor puede usar como máximo la mitad de un núcleo de CPU.
La bandera --memory
limita la cantidad de memoria que el contenedor puede usar. El valor puede especificarse en bytes, kilobytes (k), megabytes (m) o gigabytes (g). Por ejemplo, --memory 512m
limita el contenedor a 512 megabytes de memoria.
En este ejemplo, crearemos un contenedor que ejecute el comando sleep infinity
, lo que mantendrá el contenedor en ejecución indefinidamente. Limitaremos su uso de CPU a 0.5 núcleos y memoria a 256 megabytes.
docker run -d --name my-limited-container --cpus 0.5 --memory 256m ubuntu:latest sleep infinity
Analicemos el comando:
docker run
: Este comando se usa para crear e iniciar un nuevo contenedor.
-d
: Esta bandera ejecuta el contenedor en modo detached (desconectado), lo que significa que se ejecuta en segundo plano.
--name my-limited-container
: Asigna el nombre my-limited-container
al contenedor.
--cpus 0.5
: Limita el uso de CPU del contenedor a 0.5 núcleos.
--memory 256m
: Limita el uso de memoria del contenedor a 256 megabytes.
ubuntu:latest
: Especifica la imagen Docker a usar (la última versión de Ubuntu).
sleep infinity
: Este es el comando que se ejecutará dentro del contenedor. Mantiene el contenedor en ejecución.
Después de ejecutar el comando, Docker mostrará el ID del contenedor.
Para verificar que el contenedor está en ejecución y que los límites de recursos están aplicados, puedes usar el comando docker inspect
. Este comando proporciona información detallada sobre un contenedor.
docker inspect my-limited-container
La salida de docker inspect
es un objeto JSON extenso. Puedes buscar los campos CpuShares
y Memory
dentro de la sección HostConfig
para ver los límites aplicados. Nota que --cpus 0.5
se traduce a un valor CpuShares
de 512 (por defecto, 1 CPU equivale a 1024 shares). El valor Memory
estará en bytes.