Obtenga una salida estándar en tiempo real desde un contenedor acoplable con un comando ejecutado de forma remota

Obtenga una salida estándar en tiempo real desde un contenedor acoplable con un comando ejecutado de forma remota

Estoy tratando de conseguir elsalida estándar en tiempo realde un comando que estoy ejecutando en un contenedor acoplable. Sin embargo, necesito hacer esto desde un comando remoto ejecutado desde otro host.

Cuando estoy en el host de la ventana acoplable, puedo ejecutar mi comando de la ventana acoplable -ity obtener el resultado en tiempo real que necesito. Sin embargo, tengo esta restricción dondetenerpara ejecutar el comando de forma remota, lo que hace que la solución anterior sea inútil. No puedo usarlo -tporque ejecuta un pseudo terminal basado en $TERM que no existe con el comando remoto porque no hay ningún terminal.

También intenté ejecutar el comando Docker para -dejecutarlo en segundo plano, docker logs -f <container>pero el resultado aún se proporciona de una vez al final del proceso.

Se agradece cualquier solución o consejo y corríjame si pertenece a otra pila.

Respuesta1

Lo descubrí gracias a la ayuda del github de Docker. No mencioné que estaba intentando ejecutar un script de Python en el contenedor, pero no pensé que fuera importante.

En realidad, esto no fue un problema de Docker, sino un problema de Python. he aprendidoDocker ya proporciona salida estándar en tiempo real. Python mantenía toda la salida estándar en su búfer y no la vaciaba hasta completar el script. Excepto cuando el código se ejecutó en una terminal con -t.

En el comando de la ventana acoplable, todo lo que necesitaba era llamar al script para python -u <script>evitar que Python almacene en el búfer la salida estándar.

Respuesta2

Bueno, ¿por qué no usas la pila ELK con logsprout? Puedes obtener registros en tiempo real de todos los contenedores acoplables, además puedes buscar entre los registros y muchas otras cosas interesantes.

información relacionada