我可以附加到一个docker进程,但Ctrl+C不能从它分离。退出基本上停止了进程。
让流程运行,偶尔附加到流程上进行一些更改,然后再分离的推荐工作流是什么?
我可以附加到一个docker进程,但Ctrl+C不能从它分离。退出基本上停止了进程。
让流程运行,偶尔附加到流程上进行一些更改,然后再分离的推荐工作流是什么?
当前回答
如果——sig-proxy=false方法不起作用,那么您还可以使用以下命令更改转义序列:
docker attach --detach-keys="<sequence>" <container_name or id>
例如,我想使用“ctrl-c”分离容器,然后我可以使用以下方法附加容器:
docker attach --detach-keys="ctrl-c" <container_name or id>
的格式可以是字母[a- z],也可以是ctrl-和以下任意组合:
a-z(一个小写字母) @(@号) [(左括号) \(两个反斜杠) _(下划线) ^(脱字符号)
有关更多信息,请参见->覆盖分离序列
其他回答
如果你只需要docker进程在后台运行,你可以使用
Ctrl + Z
注意,这不是一个真正的分离,它会带来性能损失。 (您可以使用bg命令将其返回到前台)。
另一种选择是关闭你的终端,如果你不再需要它。
要从容器中分离,只需按住Ctrl并按P + Q。
附加到你使用的正在运行的容器:
$ docker container attach "container_name"
我有同样的问题,Ctrl+P和Q不能工作,也不是Ctrl+C…最终,我打开了另一个终端会话,我做了“docker stop containerid”和“docker start containerid”,它完成了工作。奇怪。
更新
我通常使用docker attach来查看STDOUT显示的内容,以便对容器进行故障排除。我刚刚发现码头日志-遵循621a4334f97b,这让我看到STDOUT,同时也能够ctrl+c关闭它,而不影响容器操作!这正是我一直想要的。
... 当然,你需要替换你自己的容器ID。
原来的答案
我想让容器运行,但是没有使用-it启动容器。我的解决方案是牺牲我的SSH连接(因为我被SSHed到运行容器的机器上)。关闭ssh会话使容器完好无损,但使我脱离了它。
对于任何遇到与我相同问题的人(不能在不杀死容器的情况下分离,即使在设置分离键时)......
当使用docker-compose up -d启动容器时
而不是使用docker附加{容器名}来查看尾矿日志....
Ctrl+C在不杀死容器的情况下杀死日志尾部
{服务名}是在docker-compose中列出的服务。yml文件. .(例如,当容器名称=elk_logstash_1 ->服务名称=logstash