Aquí hay una solución cuando el contenedor de la ventana acoplable sale normalmente y puede editar el Dockerfile.
Por lo general, cuando se ejecuta un contenedor de la ventana acoplable, una aplicación se sirve ejecutando un comando. De la referencia de Dockerfile ,
Tanto las instrucciones CMD como ENTRYPOINT definen qué comando se ejecuta cuando se ejecuta un contenedor. ... Dockerfile debe especificar al menos uno de los comandos CMD o ENTRYPOINT.
Cuando crea una imagen y no especifica ningún comando con CMD o ENTRYPOINT, se ejecutará el comando CMD o ENTRYPOINT de la imagen base.
Por ejemplo, el Dockerfile oficial de Ubuntu tiene CMD ["/bin/bash"]
( https://hub.docker.com/_/ubuntu ). Ahora, el bin/bash/
comando puede aceptar entradas y el docker run -it IMAGE_ID
comando adjunta STDIN al contenedor. El resultado es que obtiene una terminal interactiva y el contenedor sigue funcionando.
Cuando se especifica un comando con CMD o ENTRYPOINT en el Dockerfile, este comando se ejecuta cuando se ejecuta el contenedor. Ahora, si este comando puede terminar sin requerir ninguna entrada, terminará y el contenedor saldrá. docker run -it IMAGE_ID
se NO ofrecer el terminal interactivo en este caso. Un ejemplo sería la imagen de la ventana acoplable construida a partir del archivo Dockerfile a continuación:
FROM ubuntu
ENTRYPOINT echo hello
Si necesita ir a la terminal de esta imagen, deberá mantener el contenedor en ejecución modificando el comando entrypoint.
FROM ubuntu
ENTRYPOINT echo hello && sleep infinity
Después de ejecutar el contenedor normalmente con docker run IMAGE_ID
, puede ir a otra terminal y usar docker exec -it CONTAINER_ID bash
para obtener la terminal del contenedor.