tag run library imagenes hub example docker

run - docker tag example



¿Cómo se adjunta y se separa del proceso de Docker? (10)

Creo que esto debería depender de la situación. Tome el siguiente contenedor como ejemplo:

# docker run -it -d ubuntu 91262536f7c9a3060641448120bda7af5ca812b0beb8f3c9fe72811a61db07fc # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 91262536f7c9 ubuntu "/bin/bash" 5 seconds ago Up 4 seconds serene_goldstine

(1) Use " docker attach " para adjuntar el contenedor:

Dado que " docker attach " no asignará un tty nuevo, sino que reutilizará el tty en ejecución original, por lo que si ejecuta el comando exit , el contenedor en ejecución se cerrará:

# docker attach 91262536f7c9 exit exit # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 91262536f7c9 ubuntu "/bin/bash" 39 minutes ago Exited (0) 3 seconds ago serene_goldstine

Entonces, a menos que realmente desee hacer que el contenedor se ejecute, debe usar Ctrl + p + Ctrl + q .

(2) Utilice " docker exec "

Dado que " docker exec " asignará un nuevo tty, creo que debería usar exit lugar de Ctrl + p + Ctrl + q .

Lo siguiente es ejecutar Ctrl + p + Ctrl + q para salir del contenedor:

# docker exec -it 91262536f7c9 bash root@91262536f7c9:/# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 18160 1908 ? Ss+ 04:03 0:00 /bin/bash root 15 0.0 0.0 18164 1892 ? Ss 04:03 0:00 bash root 28 0.0 0.0 15564 1148 ? R+ 04:03 0:00 ps -aux root@91262536f7c9:/# echo $$ 15

Luego, vuelva a iniciar sesión en el contenedor y verá que el proceso de bash en el comando exper docker exec sigue vivo (PID es 15):

# docker exec -it 91262536f7c9 bash root@91262536f7c9:/# ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 18160 1908 ? Ss+ 04:03 0:00 /bin/bash root 15 0.0 0.0 18164 1892 ? Ss+ 04:03 0:00 bash root 29 0.0 0.0 18164 1888 ? Ss 04:04 0:00 bash root 42 0.0 0.0 15564 1148 ? R+ 04:04 0:00 ps -aux root@91262536f7c9:/# echo $$ 29

Puedo adjuntar a un proceso de docker pero Ctrl + c no funciona para separarlo de él. exit básicamente detiene el proceso.

¿Cuál es el flujo de trabajo recomendado para ejecutar el proceso, adjuntarlo ocasionalmente para realizar algunos cambios y luego separarlo?


Cuando nada más funcione, abre una nueva terminal y luego:

$ ps aux | grep attach username <pid_here> .............. 0:00 docker attach <CONTAINER_HASH_HERE> username <another_pid> .............. 0:00 grep --color=auto attach $ kill -9 <pid_here>



En el mismo shell, mantenga presionada la tecla ctrl y presione las teclas p luego q



Para separar de un contenedor en ejecución, use ^ P ^ Q (mantenga presionada la tecla Ctrl , presione P , presione Q , suelte Ctrl ).

Hay un problema: esto solo funciona si el contenedor se inició con -t y -i .

Si tiene un contenedor en ejecución que se inició sin una (o ambas) de estas opciones y se adjunta con la docker attach , deberá encontrar otra forma de separar. Dependiendo de las opciones que elija y del programa que se está ejecutando, ^ C puede funcionar, o puede matar todo el contenedor. Tendrás que experimentar.

Otra captura: dependiendo de los programas que esté utilizando, su terminal, shell, cliente SSH o multiplexor podrían estar interceptando ^ P o ^ Q (generalmente este último). Para probar si este es el problema, intente ejecutar o adjuntar con el --detach-keys z . Ahora debería poder separar presionando z , sin ningún modificador. Si esto funciona, otro programa está interfiriendo. La forma más fácil de --detach-keys esto es establecer su propia secuencia de --detach-keys mediante el argumento --detach-keys . (Por ejemplo, para salir con ^ K , use --detach-keys ''ctrl-k'' ). Alternativamente, puede intentar deshabilitar la intercepción de las teclas en su terminal u otro programa interferente. Por ejemplo, stty start '''' o stty start undef puede impedir que el terminal intercepte ^ Q en algunos sistemas POSIX, aunque no he encontrado que esto sea útil.


Para separar del contenedor, simplemente mantenga presionada la tecla Ctrl y presione P + Q.

Para adjuntar a un contenedor en ejecución se utiliza:

$ docker container attach "container_name"


Si solo desea realizar alguna modificación en los archivos o inspeccionar procesos, esta es otra solución que probablemente desee.

Puede ejecutar el siguiente comando para ejecutar un nuevo proceso desde el contenedor existente:

sudo docker exec -ti [CONTAINER-ID] bash

iniciará un nuevo proceso con el shell bash, y usted podría escapar de él directamente ^c , no afectará el proceso original.


Tuve el mismo problema, ctrl-P y Q no funcionaban, ni ctrl-C ... finalmente abrí otra sesión de terminal e hice "docker stop containerid " y "docker start containerid " y terminé el trabajo. Extraño.


para detener un proceso de acoplamiento y liberar los puertos, primero use ctrl-c para salir del contenedor y luego use el docker ps para encontrar la lista de contenedores en ejecución. Luego puede usar la parada del contenedor de la ventana acoplable para detener ese proceso y liberar sus puertos. El nombre del contenedor que puede encontrar en el comando docker ps que da el nombre en la columna de nombre. Espero que esto resuelva sus consultas ....