¿Quieres saber qué están haciendo tus aplicaciones de Docker en segundo plano? Los registros son esa ventana oculta hacia el interior de tus contenedores: muestran cada acción que realizan y son muy útiles para diagnosticar problemas. Pero antes de entrar en materia, veamos rápidamente qué son Docker y Docker Compose.
Docker te permite empaquetar tus aplicaciones en contenedores ligeros y ejecutarlos en la mayoría de sistemas operativos sin dependencias externas. Es como meter tus apps en cajas llamadas Contenedores, que funcionan igual en cualquier entorno. Entender qué son los contenedores es un requisito previo esencial para aprender sobre Docker Compose. Por eso, te recomiendo que primero leas nuestro artículo sobre las ventajas de la contenerización.
Docker Compose viene incluido con Docker y simplifica el desarrollo de aplicaciones con múltiples contenedores al conectar sus servicios, redes y almacenamiento. Los registros de contenedores de Docker y el sistema de logging de Docker Compose permiten a los desarrolladores ver qué hace cada contenedor.
¿Te interesa saber cómo funcionan los registros de Docker Compose? Estás en el lugar adecuado. Este artículo explica los fundamentos de los registros de Docker Compose y profundiza en aspectos más avanzados. Descubre cómo sacarle el máximo partido a Docker Compose en tus proyectos.
La importancia de los registros de Docker Compose
Imagina que un desarrollador lanza una aplicación con Docker pero no configura los registros. Al principio todo parece funcionar bien, pero enseguida los usuarios empiezan a ver errores y la aplicación se ralentiza. Sin los registros de Docker, el desarrollador no puede saber qué está fallando dentro de los contenedores. Los registros de Docker Compose son como un historial detallado de esos contenedores: registran todo lo que ocurre, lo cual es fundamental para detectar y resolver problemas más adelante.
Como desarrollador o administrador de sistemas, necesitas saber qué ocurre dentro y entre las aplicaciones con múltiples servicios encadenados. Aquí es donde los registros de Docker Compose se convierten en una herramienta imprescindible. ¿Por qué son tan necesarios estos registros?
-
Resolución de problemas y depuración
Consulta los docker logs cuando una aplicación no funcione correctamente o genere errores. Los registros de Docker son el primer recurso al que acudir para rastrear el problema. Analizando los docker logs, los desarrolladores pueden identificar la causa raíz, ya sea un error en el código, una configuración incorrecta o un problema de recursos.
-
Monitorización del estado de las aplicaciones
Revisar los registros de la aplicación de forma periódica ayuda a entender el estado general de los servicios. Los registros pueden revelar señales de alerta tempranas, como errores repetidos o tiempos de respuesta lentos. Detectar estos patrones a tiempo permite prevenir problemas futuros.
-
Auditoría y cumplimiento normativo
Para las aplicaciones sujetas a estándares específicos, los docker logs son la primera evidencia que muestra si la aplicación cumple con las directrices establecidas. Estos registros también desempeñan un papel clave en la supervisión de actividades autorizadas y no autorizadas.
-
Optimización
Los registros son una fuente de información valiosa para optimizar el software, ya que proporcionan datos de rendimiento. Por ejemplo, los desarrolladores pueden detectar consultas lentas, rutas de código ineficientes o recursos infrautilizados.
Creación de una receta Docker: despliegue de un servidor web
En esta sección, crearemos juntos una receta Docker. Antes de empezar con los registros de Docker Compose, necesitamos tener algo en marcha. Vamos a desplegar un servidor web para este propósito. Para crear un Dockerfile, ejecuta nano archivo Dockerfile en la carpeta deseada de tu VPS con el siguiente contenido y guarda el archivo:
FROM nginx:alpine RUN rm /usr/share/nginx/html/index.html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
¿Qué hace cada línea de este código?
- Empezamos con una imagen base ligera, nginx:alpine.
- A continuación, eliminamos la página de bienvenida predeterminada de Nginx.
- Luego, nos aseguramos de que el servidor web escuche en el puerto 80.
- Por último, ejecutamos el servidor Nginx con CMD.
Ahora que nuestro archivo Docker está listo, pasamos al siguiente paso: crear el archivo Docker Compose. Esta es la estructura del archivo docker-compose.yml archivo:
version: '3.8' services: web: build: . ports: - "8080:80" volumes: - ./index.html:/usr/share/nginx/html/index.html
Analicemos cada parte en detalle:
- Usamos la versión 3.8.
- En la siguiente línea, nombramos nuestro servicio "web“.
- Luego, le indicamos a Docker que construya nuestro servidor web desde la carpeta actual.
- Enlazamos el puerto 8080 del host con el puerto 80 del contenedor para que el servidor web pueda establecer una conexión.
- Por último, la configuración de volúmenes mapea index.html del disco del host al contenedor. Más adelante, puedes crear un archivo index.html con el contenido que quieras y colocarlo donde estén los archivos Dockerfile y docker-compose.yml .
Es momento de ejecutar nuestro contenedor Docker con Docker Compose. Simplemente ejecutamos docker-compose up.

Una vez que ejecutes el comando docker-compose up Docker descargará las imágenes necesarias de internet y las configurará según lo indicado en nuestros archivos de configuración.
Para verificar que el servidor web está en funcionamiento, abre el navegador, escribe la dirección IP de tu VPS y accede al puerto 8080.

Como nota adicional, puedes usar docker-compose up -d para ejecutar el contenedor en segundo plano.
Acceso a los registros con Docker Compose
Nuestro servidor web ya está en marcha y en funcionamiento. Está generando registros y almacenando esa información para su uso posterior. Acceder a los registros de docker compose es fundamental para el diagnóstico y la monitorización. ¿Cómo podemos leerlos? Aquí es donde registros de docker-compose resulta útil. Asegúrate de estar en la carpeta donde existe la configuración y ejecuta ese comando.

A veces querrás ver los registros en tiempo real mientras se generan. Añade -f al final del comando anterior y ejecuta docker-compose logs -f.

Algunas aplicaciones basadas en Docker pueden no incluir marcas de tiempo en sus registros. En ese caso, puedes usar docker-compose logs -t para añadir una marca de tiempo registrada en cada línea del registro.

Los registros de Docker también pueden mostrar las entradas más recientes. Para ello, usa docker-compose logs –tail 10 para ver las últimas 10 entradas del registro. La opción tail de docker compose logs, y de forma similar docker logs tail, es especialmente útil cuando quieres revisar la actividad reciente sin recorrer todo el historial de registros.

El propósito principal de Docker Compose es crear aplicaciones multicontenedor. Por eso, es posible que necesites leer los registros de un servicio concreto. Para hacerlo, usa docker-compose logs -f SERVICE, recuerda reemplazar SERVICE con el nombre real de tu servicio.

Registros en Docker
El ecosistema de Docker puede volverse más complejo en aplicaciones convergentes, especialmente en entornos de gran tamaño. Como ya sabemos, cada contenedor genera registros. Por eso existe un mecanismo conocido como Logging Driver, responsable de recibir, entregar y almacenar esos registros. Por defecto, Docker usa archivos JSON para el Logging Driver, pero también admite otros controladores, cada uno con sus ventajas e inconvenientes.
Todo el mundo coincide en que los registros son fundamentales en múltiples áreas, incluyendo el diagnóstico de problemas y la mejora del rendimiento del sistema. A continuación, veremos dos de los aspectos principales del uso de registros de contenedor:
- Monitorización: Los registros tienen como función principal la monitorización. En general, revelan el estado general de nuestras aplicaciones en contenedores.
- Resolución de problemas: Ante cualquier incidencia, los registros nos ayudan a detectar fallos en la aplicación.
Como los registros de docker logs y docker compose logs se generan de forma continua, pueden llegar a ocupar todo el almacenamiento VPS. Por eso necesitamos una estrategia para gestionar el espacio en disco llamada política de rotación de registros. Para crearla y aplicarla, vuelve al docker-compose.yml archivo y ábrelo. Luego, añade una sección de registro con la siguiente configuración:
version: '3.8' services: web: build: . ports: - "8080:80" volumes: - ./index.htm:/usr/share/nginx/html/index.htm logging: driver: json-file options: max-size: "200k" max-file: "10"
Puedes ajustar en cualquier momento max-size y max-file según tus necesidades.
Modelos de entrega de registros en Docker
En entornos más avanzados, los equipos pueden optar por un modelo de registro distinto al controlador JSON predeterminado, como Syslog, fluentd u otros. Sin embargo, conviene tener en cuenta que el controlador JSON-file es adecuado para la mayoría de los escenarios de registro, y puede que no sea necesario cambiar el modo predeterminado.
Según la arquitectura de tu aplicación o los requisitos de la organización, puede que tengas que recurrir a soluciones de registro centralizado conocidas como agregadores de registros. Estos servicios, entre los que se incluyen Elasticsearch, Logstash, Kibana, etc., están diseñados para recibir registros de distintas fuentes y consolidarlos, almacenarlos y analizarlos en un único lugar central.
Por otro lado, conviene almacenar los registros con soluciones de almacenamiento más económicas. Imagina que tu VPS utiliza almacenamiento rápido y costoso: puede que no sea rentable destinar esos recursos de alto rendimiento a guardar registros que quizás solo necesites como referencia futura.
Existen numerosos modelos de registro, cada uno con sus ventajas e inconvenientes. Es fundamental evaluar cada modelo con detenimiento y elegir el que mejor se adapte a tus necesidades concretas.
Consigue un VPS Linux económico o premium para alojar tu sitio web o escritorio remoto, al precio más competitivo del mercado. VPS sobre Linux KVM para mayor eficiencia, con hardware potente y almacenamiento NVMe SSD para mayor velocidad.
Leer másConclusión
Entender los registros de Docker Compose es clave para gestionar y depurar tus aplicaciones Docker con eficacia. Aprender a acceder y monitorizar estos registros mejora la resolución de problemas y refuerza el rendimiento y la seguridad de tu aplicación. Tanto si desarrollas como si administras sistemas, los registros de Docker Compose son una herramienta imprescindible para mantener una gestión eficaz de los contenedores.
Preguntas frecuentes
¿Cómo filtrar los registros de Docker Compose por tiempo?
Docker Compose no ofrece un método directo para filtrar registros por tiempo. Sin embargo, puedes filtrarlos pasándolos por grep para buscar patrones. Por ejemplo: docker-compose logs | grep "2023-04-06", sustituyendo "2023-04-06" por la fecha o el patrón de tiempo que quieras buscar.
¿Cómo detener los contenedores iniciados con Docker Compose?
Ve al directorio que contiene el archivo docker-compose.yml y ejecuta el comando docker-compose down.
¿Cómo eliminar archivos de registro manualmente?
En lugar de configurar la rotación de registros en tu archivo docker-compose.yml, puedes eliminar manualmente los archivos de registro Docker JSON de /var/lib/docker/containers/<container_id>/. Antes de hacerlo, identifica el ID del contenedor Docker con docker ps -a.
¿Se puede hacer seguimiento en tiempo real de los registros de Docker?
Sí, puedes hacerlo. Para ello, utiliza el comando docker logs junto con la opción -f o --follow. Así podrás seguir los registros de Docker en tiempo real.