Come si allega e si stacca dal processo di Docker?


5 Answers

Controlla anche https://docs.docker.com/engine/reference/commandline/attach/ :

docker attach --sig-proxy=false 304f5db405ec

Quindi utilizzare CTRL+c per staccare

Question

Posso collegarmi a un processo finestra mobile ma Ctrl + c non funziona per staccarlo da esso. exit interrompe sostanzialmente il processo.

Qual è il flusso di lavoro consigliato per far funzionare il processo, collegandolo occasionalmente per apportare alcune modifiche e quindi per staccarlo?




Penso che questo dovrebbe dipendere dalla situazione. Prendi il seguente contenitore come esempio:

# 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) Usa " docker attach " per allegare il contenitore:

Poiché " docker attach " non assegnerà un nuovo tty, ma riutilizzerà il tty originale in esecuzione, quindi se si esegue il comando exit , causerà l'uscita del contenitore in esecuzione:

# 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

Quindi, a meno che tu non voglia veramente far uscire il contenitore in esecuzione, dovresti usare Ctrl + p + Ctrl + q .

(2) Usa " docker exec "

Poiché " docker exec " assegnerà una nuova tty, quindi penso che dovresti usare exit invece di Ctrl + p + Ctrl + q .

Quanto segue è l'esecuzione di Ctrl + p + Ctrl + q per uscire dal contenitore:

# 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

Quindi accedi nuovamente al contenitore, vedrai il processo di bash nel comando docker exec della docker in anteprima è ancora attivo (PID è 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



Per staccare da un contenitore funzionante, usare ^ P ^ Q (tenere premuto Ctrl , premere P , premere Q , rilasciare Ctrl ).

C'è un problema : funziona solo se il contenitore è stato avviato con sia -t che -i .

Se si dispone di un contenitore in esecuzione che è stato avviato senza una (o entrambe) di queste opzioni e si allega con docker attach , sarà necessario trovare un altro modo per staccare. A seconda delle opzioni scelte e del programma in esecuzione, ^ C potrebbe funzionare, oppure potrebbe uccidere l'intero contenitore. Dovrai sperimentare.

Un altro problema: a seconda dei programmi che si stanno utilizzando, il terminale, la shell, il client SSH o il multiplexer potrebbero intercettare sia ^ P sia ^ Q (di solito il secondo). Per verificare se questo è il problema, provare a eseguire o allegare l' --detach-keys z . Ora dovresti essere in grado di staccare premendo z , senza alcun modificatore. Se funziona, un altro programma sta interferendo. Il modo più semplice per ovviare a questo è impostare la propria sequenza di scollegamento usando l'argomento --detach-keys . (Per esempio, per uscire con ^ K , usa --detach-keys 'ctrl-k' .) In alternativa, puoi tentare di disabilitare l'intercettazione dei tasti nel tuo terminale o in un altro programma che interferisce. Ad esempio, stty start '' o stty start undef può impedire al terminale di intercettare ^ Q su alcuni sistemi POSIX, sebbene non abbia trovato che questo sia utile.




Per staccare dal contenitore, tieni semplicemente premuto Ctrl e premi P + Q.

Per collegarsi a un contenitore funzionante si usa:

$ docker container attach "container_name"



per interrompere un processo di finestra mobile e rilasciare le porte, utilizzare innanzitutto ctrl-c per lasciare il contenitore di uscita, quindi utilizzare la finestra mobile ps per trovare l'elenco dei contenitori in esecuzione. Quindi è possibile utilizzare l'arresto del contenitore finestra mobile per interrompere tale processo e rilasciare le sue porte. Il nome del contenitore che puoi trovare dal comando ps docker che dà il nome nella colonna del nome. Spero che questo risolva le tue domande ....




Related


Tags

docker