Cómo salir de docker exec después de que el contenedor ha salido?

Cómo salgo con gracia de un contenedor docker al que me he conectado usando docker exec -ti, después de la ventana acoplable me conecté a las salidas?

Si salgo del contenedor original, el shell que ejecutó el docker exec el comando está colgado, y la única forma que puedo encontrar para salir de nuevo a su caparazón es matar al docker exec comando desde otra terminal.

¿Hay una manera más elegante?

Esto sucede si inicio el contenedor con --rm o no.

Estoy ejecutando docker 19.03.12 en bash 5.0.16 en gnome-terminal 3.26.3 en Ubuntu 20.04.

Para desconectar el TTY sin salir del shell, utilice la secuencia de escape CTRL+P seguido de CTRL+Q. Más detalles aqui.

Información adicional de esta fuente:

docker run-t-i → se puede separar con Ctrl+P &lificador; Ctrl+Q secuenciar y volver a adjuntar con docker attach

docker run-i → no se puede separar con Ctrl+P &lificador; Ctrl+Q secuencia; interrumpirá la entrada estándar

docker run → no se puede separar con Ctrl+P &lificador; Ctrl+Q; puede SIGKILL client; puede volver a conectarse con docker attach

Espero que esto ayude.

Primero ejecuta el contenedor con separado modo, no primer plano:

docker run --name mynginx -p 80:80 -d nginx

Luego puede adjuntarlo con ejecutivo de docker:

docker exec -it mynginx /bin/sh

Tenga en cuenta que si desea adjuntar a un contenedor para su inspección, debe especificar --interactive , -i y --tty , -t opciones, porque su contenedor ya está ejecutando su proceso principal en segundo plano desde su anterior docker run -d comando.
De esa manera, cuando termine de inspeccionar su contenedor, puede salir con gracia de él con ctrl+d o logout comando, al salir de un shell ordinario

@Khushal me dio la respuesta... más o menos. En mi caso, Ctrl+P &lificador; Ctrl+Q todavía no funcionaba incluso al llamar run con -t, pero simple y llanamente Ctrl+C hacer. Para proporcionar un poco de contexto, estoy jugando con un contenedor docker de Rancher, así que YMMV.

Para resumir, cree el contenedor con:docker run -t -d --name=thingy ...

Adjunte como de costumbre con:docker attach thingy

Separe con buen estilo antiguo Ctrl+C.

Por cierto, -t, de acuerdo con los documentos, asigna un pseudo-TTY.

Esta pregunta se ha formulado anteriormente, consulte: How do you attach and detach from Docker's process? - Stack Overflow

En mi propio entorno Debian que ejecuta 19.03.11, la instancia exec sale inmediatamente y devuelve mi indicador de shell tan pronto como sale el contenedor. ¿Puede proporcionar más detalles para reproducir su problema?

@BMitch editó la pregunta para agregar las banderas ` - ti’; perdón por omitir eso!

Gracias @user929169 – No conocía los términos correctos para usar. No puedo cerrar esto como duplicado ya que la respuesta está en otro sitio. Publica esto como la respuesta y obtendrás los puntos.