# Ver los registros de los contenedores


El comando `docker logs` muestra la información registrada por un contenedor en ejecución. El comando `docker service logs` muestra la información registrada por todos los contenedores que participan en un servicio. La información que se registra y el formato del registro dependen casi por completo del comando del punto de entrada (entrypoint) del contenedor.

Por defecto, `docker logs` o `docker service logs` muestra la salida del comando tal como aparecería si ejecutaras el comando de forma interactiva en una terminal. Los comandos de Unix y Linux normalmente abren tres flujos de E/S al ejecutarse, llamados `STDIN`, `STDOUT` y `STDERR`. `STDIN` es el flujo de entrada del comando, que puede incluir la entrada del teclado o la entrada de otro comando. `STDOUT` suele ser la salida normal de un comando y `STDERR` se utiliza habitualmente para mostrar mensajes de error. Por defecto, `docker logs` muestra la salida de `STDOUT` y `STDERR` del comando. Para leer más sobre E/S y Linux, consulta el [artículo del Linux Documentation Project sobre la redirección de E/S](https://tldp.org/LDP/abs/html/io-redirection.html).

En algunos casos, es posible que `docker logs` no muestre información útil a menos que realices pasos adicionales.

- Si utilizas un [controlador de registro](/engine/logging/configure/) que envía los registros a un archivo, un host externo, una base de datos u otro backend de registro, y tienes deshabilitado el ["registro doble" (dual logging)](/engine/logging/dual-logging/), es posible que `docker logs` no muestre información útil.
- Si tu imagen ejecuta un proceso no interactivo como un servidor web o una base de datos, es posible que esa aplicación envíe su salida a archivos de registro en lugar de a `STDOUT` y `STDERR`.

In el primer caso, tus registros se procesan de otras maneras y puedes optar por no utilizar `docker logs`. En el segundo caso, la imagen oficial de `nginx` muestra una solución alternativa, y la imagen oficial de Apache `httpd` muestra otra.

La imagen oficial de `nginx` crea un enlace simbólico de `/var/log/nginx/access.log` a `/dev/stdout`, y crea otro enlace simbólico de `/var/log/nginx/error.log` a `/dev/stderr`, sobrescribiendo los archivos de registro y provocando que los registros se envíen al dispositivo especial correspondiente en su lugar. Consulta el [Dockerfile](https://github.com/nginxinc/docker-nginx/blob/8921999083def7ba43a06fabd5f80e4406651353/mainline/jessie/Dockerfile#L21-L23).

El controlador oficial de `httpd` cambia la configuración de la aplicación `httpd` para escribir su salida normal directamente en `/proc/self/fd/1` (que es `STDOUT`) y sus errores en `/proc/self/fd/2` (que es `STDERR`). Consulta el [Dockerfile](https://github.com/docker-library/httpd/blob/b13054c7de5c74bbaa6d595dbe38969e6d4f860c/2.2/Dockerfile#L72-L75).

## Próximos pasos

- Configurar [controladores de registro](/engine/logging/configure/).
- Escribir un [Dockerfile](/reference/dockerfile/).

