你如何附加和脱离Docker的过程?
我可以附加到泊坞窗过程,但Ctrl + C不起作用,从它分离。 exit
基本上停止的过程。
什么是推荐的stream程运行,偶尔附加到进行一些更改,然后分离?
要在不退出shell的情况下分离tty,请使用转义序列Ctrl + p + Ctrl + q 。
更多细节在这里: https : //docs.docker.com/engine/reference/commandline/attach/
也检查出--sig-proxy
选项 :
docker attach --sig-proxy=false 304f5db405ec
然后使用CTRL+c
分离
如果您只是想对文件进行一些修改或检查进程,那么您可能需要另一个解决scheme。
您可以运行以下命令从现有容器执行新的进程:
sudo docker exec -ti [CONTAINER-ID] bash
会用bash shell启动一个新的进程,你可以直接用^c
来逃避它,它不会影响原来的进程。
我认为这应该取决于情况。以下面的容器为例:
# 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)使用“ docker attach
”来附加容器:
由于“ docker attach
” 不会分配新的tty,而是重新使用原来运行的tty,所以如果运行exit
命令,会导致正在运行的容器退出:
# 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
所以除非你真的想让运行容器退出,你应该使用Ctrl + P + Ctrl + q 。
(2)使用“ docker exec
”
由于“ docker exec
” 会分配一个新的tty,所以我认为你应该使用exit
而不是Ctrl + p + Ctrl + q 。
以下是执行Ctrl + P + Ctrl + q退出容器:
# 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
然后再次login容器,你会看到在preavious docker docker exec
命令中的bash
进程仍然活着(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
当没有别的工作时,打开一个新的terminal,然后:
$ 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>
要从容器中分离,只需按住Ctrl并按P + Q.
要附加到正在运行的容器,请使用:
$ docker container attach "container_name"
要停止docker进程并释放端口,首先使用ctrl-c离开容器,然后使用docker psfind正在运行的容器列表。 然后,您可以使用docker container stop停止该进程并释放其端口。 您可以从docker ps命令中find容器名称,该名称在名称列中给出名称。 希望这可以解决您的疑问….
在同一个shell中,按住ctrl
键并按下p
键,然后q
我有同样的问题,按Ctrl-P和Q将无法正常工作,也没有按Ctrl-C …最终我打开另一个terminal会话,我做了“docker停止containerid ”和“docker启动containerid ”,它完成了工作。 奇怪的。