你如何附加和脱离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 ”,它完成了工作。 奇怪的。