我有Docker镜像。
Docker文件在这里:
FROM debian:stable
CMD ["sleep", "300"]
那我就做了
窗口1:
docker build .
还有...
窗口1:
docker run xx
2号窗口:
docker exec xx ps
结果:
PID TTY TIME CMD
1 ? 00:00:00 sleep
6 ? 00:00:00 ps
Docker可以用,但我不能破坏它.
我尝试了许多组合(Ctrl-C,Ctrl-A,Ctrl-D,Ctrl-P,Ctrl-Q,exit...)但它不起作用。它显示一个空行直到时间结束。
Docker安装在Ubuntu 20.04上。我在Ubuntu 22.04上使用Tilix通过SSH工作。可能沿着失去了信号。
p.s.我在YouTube上看到了一个带有docker run --rm --name mydocker myimagex:v01
命令的视频--作者在这个命令后面也有黑线,但是他用Ctrl-C就可以了。但我不认为remove
和name
会影响这种行为。我很困惑
1条答案
按热度按时间1hdlvixo1#
Linux内核以一种特殊的方式处理PID 1,并在如何处理信号方面应用不同的规则,并且它没有获得默认的信号处理程序。这意味着它在接收信号时不会杀死进程,例如:
SIGTERM
、SIGSTOP
、SIGINT
。要终止进程,请执行以下操作:
SIGKILL
:kill -s 9 <pid>
docker run --init
执行它时,指定--init,以进行正确的进程管理和信号处理。–-rm
标志用于指示Docker守护进程在容器退出后清理和删除容器和卷,以保存磁盘空间。因此,它与信号处理无关。--name
选项也不是。