Conectarse al contenedor en ejecución y observar su salida
En el paso anterior, iniciamos un contenedor en modo desacoplado. Aunque el contenedor ejecutó un comando simple y probablemente finalizó rápidamente, aún podemos conectarnos a él para ver su salida. El comando docker attach permite conectarse a los flujos estándar de entrada, salida y error de un contenedor en ejecución o finalizado.
Primero, obtengamos el ID del contenedor que iniciamos en el paso anterior. Puedes usar el comando docker ps -a y buscar el contenedor que ejecutó el comando echo. Copia el ID del contenedor.
docker ps -a
Ahora, usa el comando docker attach seguido del ID del contenedor para conectarte a él.
docker attach <container_id>
Reemplaza <container_id> con el ID real de tu contenedor. Dado que el contenedor ejecutó un simple comando echo y finalizó, es posible que no veas ninguna salida inmediatamente, o podrías ver el mensaje "Hello from detached container!" si la salida aún está en el buffer. El comando attach te conectará a los flujos del contenedor. Como el contenedor ya completó su tarea, el comando attach probablemente finalizará inmediatamente después de conectarse.
Para demostrar cómo conectarse a un contenedor que permanece en ejecución, iniciemos un nuevo contenedor desacoplado que ejecute un comando que lo mantenga activo durante algunos segundos. Usaremos nuevamente la imagen ubuntu y ejecutaremos sleep 10.
docker run -d ubuntu sleep 10
Obtén el ID de este nuevo contenedor usando docker ps. Esta vez, el contenedor debería estar en estado Up.
docker ps
Ahora, conéctate a este contenedor en ejecución usando su ID.
docker attach <new_container_id>
Reemplaza <new_container_id> con el ID del contenedor que ejecuta sleep 10. Estarás conectado a los flujos estándar del contenedor. Dado que el comando sleep no produce salida, no verás nada. La terminal parecerá estar en espera. El contenedor se ejecutará durante 10 segundos y luego finalizará. Cuando el contenedor finalice, el comando attach también terminará, devolviéndote al prompt de tu terminal.