目前在Docker遇到问题;我用它来运行一个启动时启动ipython笔记本的图像。我想对ipython笔记本本身进行一些编辑,所以我需要在启动后关闭它。
但是,在终端中按CTRL + C只输入“^ C”作为字符串。似乎没有真正的方法使用CTRL + C来实际关闭ipython笔记本实例。
任何人都有任何线索可以导致这种情况,或者知道任何解决方案吗?
这篇文章建议将CTRL-Z作为一种解决方法,将进程发送到后台,然后通过进程ID杀死进程:Cannot kill Python script with Ctrl-C
可能的问题:
建议的解决方案:
您使用的容器图像很可能不能正确处理过程信号。如果您正在创作图像,请按照Roland Webers的回答建议进行更改。否则尝试使用--init
运行它。
docker run -it --init ....
这为我修复了Ctrl + C.资料来源:https://docs.docker.com/v17.09/engine/reference/run/#specify-an-init-process
@ maybeg的答案已经很好地解释了为什么会发生这种情况。
关于停止无响应的容器,另一种解决方案是简单地在另一个终端发布docker stop <container-id>
。与CTRL-C相反,docker stop
不发送SIGINT而是发送SIGTERM信号,该过程可能会以不同的方式作出反应。
用法:docker stop [OPTIONS] CONTAINER [CONTAINER ...]
在宽限期后通过发送SIGTERM然后发送SIGKILL来停止正在运行的容器
如果失败,请使用立即发送SIGKILL的docker kill <container-id>
。
来自Docker留言板上的this post:
打开一个新shell并执行
$ docker ps # get the id of the running container
$ docker stop <container> # kill it (gracefully)
这对我很有用。 CTRL-Z,CTRL- \等只出现在字符串中,但这会杀死Docker容器并将标签返回到终端输入。