在Docker 1.1.2(最新版本)中,从容器中分离而不停止容器的正确方法是什么?
例如,如果我试着:
Docker运行-i -t foo /bin/bash或 Docker附加foo(用于已经运行的容器)
两者都把我带到集装箱中的一个终端,我如何在不停止它的情况下退出集装箱的终端?
exit和CTR+C都停止容器。
在Docker 1.1.2(最新版本)中,从容器中分离而不停止容器的正确方法是什么?
例如,如果我试着:
Docker运行-i -t foo /bin/bash或 Docker附加foo(用于已经运行的容器)
两者都把我带到集装箱中的一个终端,我如何在不停止它的情况下退出集装箱的终端?
exit和CTR+C都停止容器。
当前回答
如果你在windows上使用docker,你可以使用组合'CTRL + D'
其他回答
当你运行docker attach时,你可以使用——detach-keys选项来覆盖默认的CTRL+P, CTRL+ Q序列(这并不总是有效)。
例如,当你运行docker attach——detach-keys=" CTRL - A " test并按下CTRL+A时,你将退出容器,而不会杀死它。
其他的例子:
docker attach——detach-keys=" CTRL - A,x" test -按CTRL+A,然后x退出 docker attach——detach-keys="a,b,c" test -按a,然后按b,然后按c退出
官方文件摘录:
如果你愿意,你可以为分离配置一个覆盖Docker密钥序列。如果Docker默认序列与用于其他应用程序的密钥序列冲突,这是有用的。有两种方法定义自己的分离键序列,作为每个容器的覆盖或作为整个配置上的配置属性。
要覆盖单个容器的序列,使用docker attach命令——detach-keys="<sequence>"标志。<序列>的格式可以是字母[a- z],也可以是ctrl-和以下任意组合:
a-z(一个小写字母) @(@号) [(左括号) \(两个反斜杠) _(下划线) ^(脱字符号)
这些a、ctrl-a、X或ctrl-\\值都是有效键序列的示例。若要为所有容器配置不同的配置默认密钥序列,请参阅配置文件部分。
注意:从docker版本1.10+开始工作(在回答这个问题时,当前版本是18.03)
按Ctrl+p,然后按Ctrl+q。它将帮助您将交互模式转换为守护进程模式。
见https://docs.docker.com/engine/reference/commandline/cli/ # default-key-sequence-to-detach-from-containers:
一旦附加到容器,用户就可以使用using CTRL-p CTRL-q键序列从容器中分离并让它运行。这个分离键序列可以使用detachKeys属性自定义。[…]
为了防止有日志,您应该使用-d标志在分离模式下运行
docker run -d <your_command>
如果你已经卡住了,你可以在你的终端上打开一个新的窗口/标签,然后关闭第一个。它不会停止正在运行的作业的进程
你可以通过发送SEGKILL来杀死docker cli进程。如果容器以
Docker运行- some/container
你可以得到它的pid
Ps -aux | grep docker
user 1234 0.3 0.6 1357948 54684 pts/2 Sl+ 15:09 0:00 docker run -it some/container
假设它是1234,你可以用它“分离”
杀死-9 1234
这是一个hack,但它的工作!
如果你在windows上使用docker,你可以使用组合'CTRL + D'