Cómo comprobar el uso de RAM y CPU de un contenedor Docker
Docker es una de las plataformas de contenedorización más populares y utilizadas para crear, compartir y ejecutar aplicaciones. En el mundo actual, la mayoría de las aplicaciones se despliegan en la plataforma de contenedorización, por lo que gestionar un contenedor Docker es la tarea clave de cualquier administrador de sistemas. Docker te permite comprobar y monitorizar el uso de recursos como CPU y Memoria de los contenedores Docker.
Este tutorial te mostrará cómo comprobar el uso de CPU y RAM de los contenedores Docker.
Requisitos previos
- Un servidor que ejecute Linux con Docker instalado.
- Una contraseña de root configurada en el servidor.
Cómo monitorizar y comprobar el uso de CPU y RAM de los contenedores Docker
Docker proporciona un subcomando stats que te permite comprobar la utilización de memoria y CPU de tus contenedores Docker en ejecución.
Para listar todos los comandos docker stats, ejecuta el siguiente comando.
docker stats --help
Obtendrás la siguiente salida.
Usage: docker stats [OPTIONS] [CONTAINER...] Display a live stream of container(s) resource usage statistics Options: -a, --all Show all containers (default shows just running) --format string Pretty-print images using a Go template --no-stream Disable streaming stats and only pull the first result --no-trunc Do not truncate output
Ahora, vamos a ejecutar el comando docker stats para comprobar el estado de todos los contenedores en ejecución:
docker stats
Obtendrás la información de todos los contenedores en ejecución en la siguiente salida.
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS cb40a0f56aba determined_robinson 0.00% 2.648MiB / 3.839GiB 0.07% 726B / 0B 0B / 12.3kB 3 e0ee5b16c93f portainer 0.84% 24.6MiB / 3.839GiB 0.63% 1.02MB / 4.35MB 0B / 721kB 5
Por defecto, el comando docker stats mostrará un flujo en directo de todas las estadísticas de los contenedores. Si quieres ver las primeras estadísticas de todos los contenedores en ejecución, utiliza el indicador –no-stream.
docker stats --no-stream
Obtendrás la siguiente salida.
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS cb40a0f56aba determined_robinson 0.00% 2.648MiB / 3.839GiB 0.07% 796B / 0B 0B / 57.3kB 3 e0ee5b16c93f portainer 0.00% 25.5MiB / 3.839GiB 0.65% 1.03MB / 4.35MB 0B / 721kB 5
Por defecto, el comando docker stats mostrará las estadísticas de todos los contenedores en ejecución. Si quieres ver las estadísticas de los contenedores en ejecución y de los detenidos, utiliza la opción -a:
docker stats --no-stream -a
Si quieres comprobar el estado de un contenedor concreto, utiliza el comando docker stats seguido del id del contenedor.
docker stats cb40a0f56aba
Obtendrás la siguiente salida.
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS cb40a0f56aba determined_robinson 0.00% 2.648MiB / 3.839GiB 0.07% 796B / 0B 0B / 57.3kB 3
Ejecuta el siguiente comando para mostrar sólo la información de la CPU de todos los contenedores en ejecución.
docker stats --format "{{.Container}} {{.CPUPerc}}" --no-stream
Salida.
cb40a0f56aba 0.00% e0ee5b16c93f 0.00%
Ejecuta el siguiente comando para mostrar sólo la información de CPU y Memoria de todos los contenedores en ejecución.
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemPerc}}"
Salida.
CONTAINER CPU % MEM % cb40a0f56aba 0.00% 0.07% e0ee5b16c93f 0.10% 0.59%
Visualizar el uso de contenedores Docker utilizando pseudoarchivos
También puedes comprobar las métricas de los contenedores Docker desde los grupos de control que se encuentran en el directorio /sys/fs/cgroup del sistema anfitrión del contenedor Docker.
Primero, obtén el id de todos los contenedores en ejecución utilizando el siguiente comando.
docker ps --no-trunc --format "{{.Names}}\t{{.ID}}"
Obtendrás la siguiente salida.
determined_robinson cb40a0f56aba8b3a29513dafa7622f8d5d6435c9302dc6a3db73ea5eca506af5 portainer e0ee5b16c93f358a15dfcb93cc80d2c2d1c1c675e7b65e41434ce20f08773465
A continuación, ejecuta el siguiente comando para obtener las estadísticas del segundo contenedor.
cat /sys/fs/cgroup/system.slice/docker-e0ee5b16c93f358a15dfcb93cc80d2c2d1c1c675e7b65e41434ce20f08773465.scope/cpu.stat
Obtendrás las métricas del contenedor en la siguiente salida.
usage_usec 1550758 user_usec 1301875 system_usec 248883 nr_periods 0 nr_throttled 0 throttled_usec 0
Conclusión
En este post, te hemos mostrado cómo comprobar el uso de CPU y Memoria de un contenedor Docker a través de la línea de comandos. Espero que esto te ayude a monitorizar tu entorno Docker. No dudes en preguntarme si tienes alguna duda.