我可以附加到一个docker进程,但Ctrl+C不能从它分离。退出基本上停止了进程。

让流程运行,偶尔附加到流程上进行一些更改,然后再分离的推荐工作流是什么?


当前回答

在同一个shell中,按住Ctrl键,然后按P键和Q键

其他回答

对于任何遇到与我相同问题的人(不能在不杀死容器的情况下分离,即使在设置分离键时)......

当使用docker-compose up -d启动容器时

而不是使用docker附加{容器名}来查看尾矿日志....

Ctrl+C在不杀死容器的情况下杀死日志尾部

{服务名}是在docker-compose中列出的服务。yml文件. .(例如,当容器名称=elk_logstash_1 ->服务名称=logstash

如果你只需要docker进程在后台运行,你可以使用

Ctrl + Z

注意,这不是一个真正的分离,它会带来性能损失。 (您可以使用bg命令将其返回到前台)。

另一种选择是关闭你的终端,如果你不再需要它。

我用的是Mac电脑,出于某种原因,Ctrl-p Ctrl-q只有在按住Shift的时候才会起作用

要从正在运行的容器中分离,请使用^P^Q(按住Ctrl,按P,按Q,释放Ctrl)。

这里有一个问题:这只在容器同时以-t和-i开始时才有效。

如果你有一个正在运行的容器,启动时没有这些选项中的一个(或两个),并且你使用docker attach附加,你需要找到另一种方法来分离。^C可以工作,也可以杀死整个容器,这取决于你选择的选项和正在运行的程序。你得自己试验一下。

Another catch: Depending on the programs you're using, your terminal, shell, SSH client, or multiplexer could be intercepting either ^P or ^Q (usually the latter). To test whether this is the issue, try running or attaching with the --detach-keys z argument. You should now be able to detach by pressing z, without any modifiers. If this works, another program is interfering. The easiest way to work around this is to set your own detach sequence using the --detach-keys argument. (For example, to exit with ^K, use --detach-keys 'ctrl-k'.) Alternatively, you can attempt to disable interception of the keys in your terminal or other interfering program. For example, stty start '' or stty start undef may prevent the terminal from intercepting ^Q on some POSIX systems, though I haven't found this to be helpful.

要在不退出shell的情况下分离tty,请使用转义序列Ctrl+P后跟Ctrl+Q。详情请点击这里。

来自此来源的其他信息:

docker run -t -i→可以用^P^ q分离,用docker attach重新连接 docker run -i→不能与^P^Q分离;将中断stdin docker run→不能与^P^Q分离;可以SIGKILL客户端;可以用docker attach重新连接吗