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.

También te podría gustar...