shell – 如何修复docker容器中的ctrl c
如果我连接到docker容器
在里面我想杀死我用ctrl c开始的东西我注意到它需要永远完成.我已经用Google搜索了,似乎ctrl c的工作方式与您预期的有点不同.我的问题,如何在容器内修复ctrl c? 最佳答案
问题是Ctrl-C向容器内的顶级进程发送信号,但该进程不一定会像您期望的那样做出反应.顶级进程在容器内部具有ID 1,这意味着它不会获得进程通常具有的默认信号处理程序.如果顶级进程是shell,那么它可以通过自己的处理程序接收信号,但不会将其转发到shell中执行的命令.细节解释为here.在这两种情况下,docker容器就好像它只是忽略Ctrl-C一样.
从docker 0.6.5开始,您可以将-t添加到docker run命令,该命令将附加伪TTY.然后,您可以键入Control-C以从容器中分离而不终止它. 如果使用-t和-i,则Control-C将终止容器.当使用-i和-t时,你必须使用Control-P Control-Q分离而不终止. 测试1:
容器仍然列出. 测试2:
容器不在那里(已经终止).如果在第二个示例中键入Control-P Control-Q而不是Control-C,则容器仍将运行.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |