Considerar:
docker run -it centos /bin/bash
Presioné Ctrl+ Dpara salir.
Quiero seguir ejecutando este contenedor, pero descubrí que no puedo.
El único método es
docker commit `docker ps -q -l` my_image
docker run -it my_image /bin/bash
Estoy en lo cierto? hay algun metodo mejor? (Estoy usando docker 0.8.0.)
Respuestas:
Puede reiniciar un contenedor existente después de que salga y sus cambios sigan ahí.
fuente
docker start `docker ps -q -l` && docker attach `docker ps -q -l`
docker start -i $(docker ps -q -l)
. ;-) Naming puede ayudar a controlar mejor qué contenedor está seleccionado.-l
obtener el último, está bien ...`docker ps -q -l`
bit es una expansión. Será reemplazado con la identificación del último (-l) contenedor acoplable creado. -q simplemente suprime otra información (junto a la ID) que generalmente se genera`docker ps`
. ---- nota: Backtick no es un signo de cita, tiene un significado muy especial. El shell evalúa (ejecuta) todo lo que escribe entre backticks antes del comando principal - unix.stackexchange.com/questions/27428/…Created...
desde el cual no se puede iniciar con adocker start ...
. Sin embargo, se puede reiniciar usandodocker restart ...
-l
solo obtiene la "última" ventana acoplable. Si es como yo ydocker ps -a
muestra más de una cosa que necesita para iniciar, puede reiniciar "todos" (-a) cambiando el comando anterior adocker start `docker ps -q -a`
.-q
simplemente lo hace "silencioso" (no registra la salida).Explicación:
docker start
iniciar un contenedor (requiere nombre o ID)-a
adjuntar al-i
modo interactivo deldocker ps
contenedor Listar contenedores-q
lista solo ID de contenedores-l
lista solo contenedor creado por última vezfuente
Utilizar:
Esto iniciará todos los contenedores que están en el estado salido.
Esto se conectará al contenedor particular.
fuente
docker exec -it <container id> /bin/bash
(o simplemente bash).Si desea hacerlo en múltiples comandos fáciles de recordar:
docker ps -a
docker start -i <name/id>
los
-i
bandera le dice a Docker que se una al stdin del contenedor.Si el contenedor no se inició con un shell interactivo para conectarse, debe hacer esto para ejecutar un shell:
El
/bin/sh
es el shell generalmente disponible con imágenes alpinas.fuente
Error response from daemon: Container <id> is not running
Si desea continuar exactamente un contenedor Docker con un nombre conocido:
fuente
docker start <name>
donde <nombre> es el nombre de su contenedor. Al menos con docker v19.03.8Sigue estos pasos:
Ejecute el siguiente comando para ver que todos los servicios del contenedor se ejecutan y se detienen.
-a
Se da la opción de ver que el contenedor también se detieneLuego, inicie el contenedor acoplable por
container_id
nombre de etiqueta o por contenedor.Digamos de la imagen de arriba, id del contenedor 4b161b302337
Entonces el comando a ejecutar es
Se puede verificar si el contenedor se está ejecutando con
fuente
Si tiene un contenedor con nombre, puede iniciarlo ejecutando
donde container_name es el nombre del contenedor que se debe proporcionar al momento de crear el contenedor. Puede reemplazar
container_name
con la identificación del contenedor en caso de que el contenedor no tenga nombre. La ID del contenedor se puede encontrar ejecutando:fuente
Estos comandos funcionarán para cualquier contenedor (no solo los últimos salidos). De esta manera funcionará incluso después de que su sistema se haya reiniciado. Para hacerlo, estos comandos usarán "id de contenedor".
Pasos:
Enumere todas las ventanas acoplables mediante este comando y anote la identificación del contenedor que desea reiniciar:
docker ps -a
Inicie su contenedor utilizando la identificación del contenedor:
docker start <container_id>
Adjunte y ejecute su contenedor:
docker attach <container_id>
NOTA: funciona en Linux
fuente
por nombre
o por Id
esto reinicia el contenedor detenido, use -i para adjuntar el STDIN del contenedor o en lugar de -i puede adjuntarlo a la sesión del contenedor (si ejecuta con -it)
fuente
Esto iniciará todos los contenedores que están en el estado 'Salido'
fuente