He estado leyendo aquí y allá en línea, pero la respuesta no viene completamente explicada. Espero que esta pregunta aquí, si se responde, pueda proporcionar una explicación actualizada y completa del asunto.
¿Por qué alguien definiría un contenedor con los siguientes parámetros?
stdin: true tty: trueTambién si
`docker run -it`vincular el proceso del contenedor ejecutado al stdin y tty del cliente que realiza la llamada, ¿a qué se vincularía la configuración de esos indicadores en un contenedor con su proceso ejecutado?
Solo podía imaginar un escenario, que es, si el comando se deja decir bash, entonces puede adjuntarlo (es decir, esa instancia de ejecución de bash) más tarde después de que se esté ejecutando el contenedor.
Pero, de nuevo, uno podría ejecutar docker run it cuando sea necesario. Me refiero a que uno lanza un nuevo bash y hace lo que sea necesario. No es necesario adjuntarlo a uno en ejecución
Así que la primera parte de la pregunta es:
a) ¿Qué está pasando debajo del capó?
b) ¿Por qué y cuándo usarlo, qué diferencia hace y cuál es el valor agregado?
AFAIK, configurar stdin: true en la especificación del contenedor simplemente mantendrá abierto el proceso del contenedor stdin esperando que alguien lo adjunte con kubectl attach .
En cuanto a tty: true , esto simplemente le dice a Kubernetes que stdin también debería ser una terminal. Algunas aplicaciones pueden cambiar su comportamiento en función del hecho de que stdin es un terminal, por ejemplo, agregar algo de interactividad, finalización de comandos, salida en color, etc. Pero en la mayoría de los casos, generalmente no lo necesita.
kubectl exec -it POD bash también contiene indicadores -it pero en este caso es realmente necesario porque está generando un proceso de shell en el espacio de nombres del contenedor que espera tanto la entrada estándar como la terminal del usuario.