Comment avez-vous d'attacher et de détacher le Panneau du processus?
Je peux joindre à un docker, mais Ctrl+c ne fonctionne pas à se détacher d'elle. exit
fondamentalement arrête le processus.
Ce qui est recommandé de flux de travail pour le processus en cours d'exécution, à l'occasion attacher à faire quelques modifications, puis de détacher?
- Lors de l'utilisation de nsenter, je viens de Ctrl-D out.
- Ne clôture
xterm
,konsole
, etc. travail? Il fonctionne pour moi (j'ai détaché).
Vous devez vous connecter pour publier un commentaire.
Détacher de l'ats sans quitter le shell, utilisez la séquence d'échappement Ctrl-p Ctrl-q.
plus de détails ici:
https://docs.docker.com/engine/reference/commandline/attach/
informations supplémentaires provenant de cette source (https://groups.google.com/forum/#!msg/panneau de l'utilisateur/nWXAnyLP9-M/kbv-FZpF4rUJ):
^P^Q
et remis en place avec menu fixe joindre^P^Q
; va perturber stdin^P^Q
; peut SIGKILL client; peut rattacher avec docker joindredocker run -d -i -t -p 80:80 ubuntu /bin/bash
de commande. Puis-je utiliserdocker attach processID
, faire mon travail et.... n'ai aucune idée de comment le détacher 🙂stty start ""
Cela devrait corriger le problème de tous ces gens dont les ^p^q ne fonctionne pas."detachKeys": "ctrl-a,a"
dans votre .menu fixe/config.fichier json ou--detach-keys "ctrl-a,a"
sur la ligne de commande à joindre etc.Ctrl + Z
ne séparent pas; c'est juste que les milieux du processus. Ce n'est pas le même que le détachement et porte sur les performances.^P^Q
en anglais, sur le plan procédural: tout en maintenantCtrl
, pousserP
puis poussezQ
, puis laissez-le allerCtrl
.Découvrez aussi l'option
--sig-proxy
:Ensuite utiliser
CTRL+c
pour détacherdocker run -ti --sig-proxy=false busybox top
qui semble ne pas fonctionner, le processus est tué avec ctrl-c mais à partir dedocker run -t -sig-proxy=false busybox top
semblait fonctionner et permettre de quitter avec ctrl-cCtrl-c
va arrêter le conteneur.Si vous voulez juste faire l'objet de quelques modifications à des fichiers ou à examiner des processus, en voici une autre solution, vous voudrez probablement.
Vous pouvez exécuter la commande suivante pour exécuter un nouveau processus à partir de l'existant contenant:
sudo docker exec -ti [CONTAINER-ID] bash
va démarrer un nouveau processus avec le shell bash, et vous pourriez échapper par
^c
directement, cela n'affectera pas le processus d'origine.Je pense que cela doit dépendre de la situation.Prendre le conteneur suivant comme exemple:
(1) Utiliser "
docker attach
" pour joindre le conteneur:Depuis "
docker attach
" ne allouer une nouvelle ats, mais la réutilisation de l'exécution d'origine ats, donc, si vous exécutezexit
de commande, cela va entraîner l'exécution de conteneur de sortie:De sorte que si vous voulez vraiment faire de l'exécution de conteneur de sortie, vous devez utiliser Ctrl+p + Ctrl+q.
(2) l'Utilisation "
docker exec
"Depuis "
docker exec
" sera allouer une nouvelle ats, donc je pense que vous devriez utiliserexit
au lieu de Ctrl+p + Ctrl+q.La suite est en cours d'exécution Ctrl+p + Ctrl+q pour quitter le conteneur:
Puis connectez-vous en conteneur de nouveau, vous voyez le
bash
processus preaviousdocker exec
commande est toujours en vie (PID est de 15):quand rien d'autre ne fonctionne, ouvrez un nouveau terminal alors:
-9
n'était pas nécessaire.À se détacher de l'exécution d'un conteneur, utilisez ^P^Q (maintenir l' Ctrl, appuyez sur P, appuyez sur Q, release Ctrl).
Il y a un hic: cela ne fonctionne que si le conteneur a été lancé avec les deux
-t
et-i
.Si vous avez l'exécution d'un conteneur qui a été commencé sans que l'un (ou les deux) de ces options, et vous attacher avec
docker attach
, vous aurez besoin de trouver un autre moyen de se détacher. Selon les options que vous avez choisi et le programme qui est en cours d'exécution, ^C de travail, ou il peut tuer tout le contenant. Vous aurez à expérimenter.Un autre attraper: Selon le programme que vous utilisez, votre terminal, shell, SSH client, ou multiplexeur pourrait être l'interception soit ^P ou ^Q (généralement le dernier). Pour tester si c'est le problème, essayez d'exécuter ou de fixation avec la
--detach-keys z
argument. Vous devriez maintenant être en mesure de se détacher en appuyant sur z, sans modificateurs. Si cela fonctionne, un autre programme est en conflit. La meilleure façon de contourner cela est de définir votre propre détacher de la séquence à l'aide de la--detach-keys
argument. (Par exemple, à la sortie avec ^K, utilisez--detach-keys 'ctrl-k'
.) Sinon, vous pouvez tenter de désactiver l'interception des touches dans votre terminal ou autre interférer programme. Par exemple,stty start ''
oustty start undef
peut empêcher le terminal d'intercepter ^Q sur certains systèmes POSIX, bien que je n'ai pas trouvé cela très utile.J'ai eu le même problème, ctrl-P et Q ne serait pas de travail, ni ctrl-C... finalement, j'ai ouvert une autre session de terminal, et j'ai fait "docker arrêter containerid" et "panneau de démarrage containerid" et il fait le travail. Bizarre.
--rm
drapeau.Ctrl+P
etCtrl+Q
fonctionne si vous avez commencé à le récipient avec-it
drapeau.À se détacher du récipient que vous maintenez simplement Ctrl et appuyez sur P + Q.
À joindre à l'exécution d'un récipient que vous utilisez:
Dans la même coquille, maintenez
ctrl
enfoncée et appuyez sur les touchesp
puisq
-it
drapeau.Je suis sur un Mac, et pour une raison quelconque, Ctrl-p Ctrl-q ne fonctionne que si j'ai tenu également Maj
pour arrêter un docker processus et de libérer les ports, utilisez d'abord les touches ctrl-c pour quitter la quitter le conteneur ensuite utiliser docker ps pour trouver la liste de l'exécution de conteneurs. Ensuite, vous pouvez utiliser le conteneur docker stop pour arrêter ce processus et la libération de ses ports. Le nom de conteneur, vous pouvez trouver à partir de la docker ps de commande qui donne le nom dans la colonne nom. Espérons que cela résout vos requêtes....