Creé un contenedor usando el comando
docker run ubuntu /bin/bash -c "echo 'cool content' > /tmp/cool-file" Ahora veo que el contenedor ha salido.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9e5017aef3f9 ubuntu "/bin/bash -c 'echo '" 38 seconds ago Exited (0) 36 seconds ago elegant_euler Pregunta: ¿Cómo puedo reiniciar y acceder al modo interactivo para este contenedor utilizando su ID de contenedor ?
No puedo usar docker run -it <image_name> ya que esto espera el nombre de la imagen y no la identificación del contenedor. Intenté usar la ventana acoplable adjunta, pero creo que esto solo funciona para ejecutar contenedores. No quiero comprometer este contenedor todavía, así que, ¿cómo puedo reiniciar y entrar en modo interactivo para este contenedor usando su ID de contenedor?
EDITAR: puedo ingresar a otros contenedores usando docker start {container-id} y luego ejecutando docker attach {container-id} . Me pregunto si hay algo peculiar en la forma en que creé el contenedor que daría como resultado este comportamiento. Recién estoy comenzando con la ventana acoplable, así que diríjame en la dirección correcta si me falta algo básico.
Un contenedor sale cuando completa su comando. Así que el contenedor comenzó con
docker run ubuntu /bin/bash -c "echo 'cool content' > /tmp/cool-file" saldrá tan pronto como se complete el comando echo . En este caso, no tiene sentido reiniciar ese contenedor.
Si ejecuta un nuevo contenedor en modo separado, podrá mantenerlo vivo y adjuntarlo por segunda vez.
Entonces, en su caso, debe ejecutar un nuevo contenedor desde la imagen en modo separado ejecutando un comando como /bin/bash , luego puede ejecutar el eco y adjuntarlo
docker run -d -ti ubuntu /bin/bash docker exec -ti <containerId> /bin/bash -c "echo 'cool content' > /tmp/cool-file"El contenedor se mantendrá vivo, por lo que puede ejecutar más comandos en él, por ejemplo, docker exec -ti /bin/bash -c "cat /tmp/cool-file"
o ejecute un nuevo /bin/bash para "adjuntar" su contenedor y trabajar en él como un símbolo del sistema
docker exec -ti <containerId> /bin/bash root@<containerId>:/# cat /tmp/cool-file cool contentPuede detener/iniciar/reiniciar con éxito este contenedor
docker stop <containerId> && docker start <containerId>o
docker restart <containerId> Recuerde que cuando reinicia un contenedor, ejecuta nuevamente su comando original. Entonces, si pudiera reiniciar el contenedor de su caso de uso (pero no lo hace), se ejecutaría nuevamente /bin/bash -c "cat /tmp/cool-file"
Al reiniciar un contenedor que se ejecuta con el comando /bin/bash, se ejecutará nuevamente el mismo comando al reiniciar.
Normalmente no puede cambiar el comando a EJECUTAR al reiniciar un contenedor existente; para hacerlo, puede probar algunos trucos como se sugiere en Cómo iniciar un contenedor docker detenido con un comando diferente .
lo intenté yo mismo:
docker restart <container_id> docker exec -it <container_id> bashfunciona perfecto para reiniciar y acceder a la terminal interactiva.
Compruebe el comando de start de Docker
docker stop {containerId} && docker start -i {containerId}