Skip to main content

Los contenedores Docker tienen un modo interactivo que le permite adjuntar flujos de entrada y salida de su terminal al proceso del contenedor. Presionar Ctrl-C generalmente terminará el proceso, haciendo que el contenedor se detenga. El objetivo de este artículo es salir del modo interactivo sin necesidad de detener el mismo.

Abandonar el contenedor sin detenerlo

Para lograr el objetivo, es necesario seguir la siguiente secuencia en el orden mencionado:

Ctrl-P
Ctrl-Q

Abandonar el contenedor cuando la secuencia del teclado no responde

Esto puede suceder si el flujo de entrada del contenedor no está conectado a su terminal (flag -i) o no tiene un pseudo-TTY asignado (flag -t). También podría encontrar este problema si el proceso de su contenedor maneja la secuencia de teclas de desconexión y no la anuló cuando attacheó.

Para lograr el objetivo, se debe abrir temporalmente otra ventana de shell y usarla para eliminar el proceso docker.attach que mantiene activo el archivo adjunto.

Primero busque el ID de proceso del “attachment process”:

bash 5.0# ps -aux | grep attach
user         31976   0.0  0.1 34913508   9120 s002  S+    7:35PM   0:00.36 docker attach 5524a1f3340e

Se necesita usar el comando kill para terminar este proceso:

kill -9 <PID>

Esta técnica funciona eliminando el proceso CLI de Docker que conectó el terminal al contenedor, no el proceso dentro del contenedor que lo mantiene en ejecución. Su terminal original vuelve a ser utilizable y el contenedor permanece activo.

Ingresando nuevamente al modo interactivo

Puede volver a ingresar a los contenedores mediante el comando “attach”. Esto adjunta automáticamente los flujos de entrada, salida y error de su terminal al contenedor especificado:

docker attach <my-container-id>

Los tres flujos están conectados de forma predeterminada. Puede omitir el flujo de entrada pasando el indicador –no-stdin. La salida del contenedor se transmitirá a su terminal, pero no podrá proporcionar ninguna entrada.

El contenido de este artículo esta bajo licencia Creative Commons.