Crear un contenedor con límites de recursos iniciales
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.