OpenCPU/RStudio Docker容器启动后不久因SIGWINCH错误终止
解决Windows下OpenCPU/RStudio Docker容器自动终止(SIGWINCH错误)问题
问题现象
在Windows系统中运行官方opencpu/rstudio镜像,启动约1分钟后容器因捕获SIGWINCH信号自动终止,期间无任何操作,日志关键输出:
[Wed Feb 21 17:27:40.950533 2024] [mpm_prefork:notice] [pid 25] AH00170: caught SIGWINCH, shutting down gracefully Terminated
原因分析
SIGWINCH信号通常用于通知进程终端窗口大小变化,但此处无操作却触发该信号,大概率是Windows环境下Docker伪终端(-t参数)的交互异常导致容器收到意外信号。
解决步骤
方法1:移除伪终端参数,后台运行容器
原命令使用-t分配伪终端,Windows环境下该参数可能引发信号异常。修改命令为:
docker run -d -p 80:80 -p 8004:8004 opencpu/rstudio
-d:让容器在后台运行,避免TTY交互带来的信号问题- 容器启动后可通过
docker logs <容器ID>查看运行状态
方法2:如需交互,使用-it并保持终端稳定
如果需要与容器交互,保留-it参数但确保启动容器的终端窗口不被最小化或调整大小:
docker run -it -p 80:80 -p 8004:8004 opencpu/rstudio
启动后尽量保持终端窗口状态不变,避免触发窗口大小变化信号。
方法3:修改Apache配置忽略SIGWINCH信号
如果上述方法无效,可自定义镜像修改Apache的信号处理:
- 创建
Dockerfile:
FROM opencpu/rstudio RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf \ && echo "SignalIgnore SIGWINCH" >> /etc/apache2/apache2.conf
- 构建自定义镜像:
docker build -t custom-opencpu .
- 运行自定义镜像:
docker run -d -p 80:80 -p 8004:8004 custom-opencpu
内容的提问来源于stack exchange,提问作者Wei Zhao
相关产品推荐
相关产品推荐

