ubuntu Docker运行不退出

z9ju0rcb  于 2023-06-21  发布在  Docker
关注(0)|答案(1)|浏览(205)

我有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就可以了。但我不认为removename会影响这种行为。我很困惑

1hdlvixo

1hdlvixo1#

Linux内核以一种特殊的方式处理PID 1,并在如何处理信号方面应用不同的规则,并且它没有获得默认的信号处理程序。这意味着它在接收信号时不会杀死进程,例如:SIGTERMSIGSTOPSIGINT
要终止进程,请执行以下操作:

  • 从容器外部,使用SIGKILLkill -s 9 <pid>
  • 在容器内部,当您使用docker run --init执行它时,指定--init,以进行正确的进程管理和信号处理。

–-rm标志用于指示Docker守护进程在容器退出后清理和删除容器和卷,以保存磁盘空间。因此,它与信号处理无关。--name选项也不是。

相关问题