LOS FLAGS -it
Una de las cosas en las que me atasqué un poco cuando empecé a trabajar con docker fue el hecho de que "a veces" me encontraba con que los contenedores se paraban y ya no podía acceder a ellos ni iniciarlos de nuevo (con docker start). Al principio no sabía el porqué y además me desconcertaba el hecho de que me pasaba con algunos contenedores y con otros no.
Sin entrar en detalles, que derivan de cómo se han construido los contenedores, la solución para que no os pase esto está en:
- Siempre usar el flag -it al ejecutar una orden docker run si es un contenedor que no tiene servicios. Este -it es la unión del flag -i (--interactive) y el flag -t (--tty) que lo que hacen es abrir la entrada estándar del contenedor que estamos ejecutando y permitir la posibilidad de abrir un terminal en el contenedor. Es decir, nos va a permitir interactuar con él.
- No debemos añadir al final otra orden que no sea /bin/bash (u otro shell que puedan contener los contenedores) ya que eso sobreescribe la orden de arranque de algunos contenedores (shell o inicio de servicio dependiendo del tipo de contenedor) y será imposible volver a arrancarlos una vez parados. Hay que tener en cuenta que una vez arrancados, si lo hemos hecho bien, siempre podremos ejecutar órdenes en el contenedor, tal y como veremos posteriormente.
Debemos de tener en cuenta que si los contenedores no son contenedores con servicios se paran tras salir la primera vez de interactuar con ellos. Para iniciarlos de nuevo, como ya he dejado ver en el primer párrafo, tenemos la orden docker start cuyo funcionamiento es muy simple. Lo vamos a ilustrar con un ejemplo.
# Arrancar el contenedor con nombre servidorWeb (debe estar parado) > docker start servidorWeb # Arrancar el contenedor con ID 511eeed5992d > docker start 511eeed5992d |