当Docker作为PID 1运行时,按下CTRL-C无法使其无限休眠的原因是因为Docker容器的PID 1进程接收到CTRL-C信号时,默认会尝试优雅地停止容器。然而,当Docker容器的PID 1进程是一个无限休眠的进程时,它无法响应CTRL-C信号,导致容器无法正常停止。
这种情况下,可以考虑使用以下方法来使Docker容器无限休眠:
CMD ["sh", "-c", "while true; do sleep 1; done"]
这样,当按下CTRL-C时,容器会继续执行无限循环,实现无限休眠的效果。
stop_signal
参数来指定停止容器的信号。可以将其设置为一个不会被容器内进程捕获的信号,例如SIGUSR1。示例:version: '3'
services:
myservice:
build:
context: .
stop_signal: SIGUSR1
然后,在容器内部的脚本中,可以通过捕获SIGUSR1信号来实现无限休眠的效果。
需要注意的是,以上方法仅适用于Docker容器作为PID 1运行时无限休眠的场景。在其他情况下,可能需要根据具体的应用场景和需求来选择适当的方法。
关于Docker和容器相关的更多信息,您可以参考腾讯云的容器服务产品:腾讯云容器服务。
领取专属 10元无门槛券
手把手带您无忧上云