作为IT工程师,我经常遇到Docker容器不按预期退出的情况。以下是详细分析及解决方案:
exec
命令tail -f
或类似保持进程运行的命令-it
参数启动的容器restart: always
策略docker stop -t 0 <container> # 立即停止
docker kill <container> # 强制终止
# 使用exec形式而非shell形式
CMD ["executable", "param1", "param2"]
# 确保脚本正确处理信号
STOPSIGNAL SIGTERM
#!/bin/sh
# 捕获信号
trap 'exit 0' SIGTERM
# 主进程
your_service &
# 等待信号
wait
# 查看容器日志
docker logs <container>
# 检查进程树
docker exec <container> ps aux
# 检查退出代码
docker inspect <container> --format='{{.State.ExitCode}}'
# 设置停止超时
docker run --stop-timeout 30 <image>
# 禁用自动重启
docker run --restart no <image>
exec
形式而非shell形式运行命令通过以上分析和解决方案,您应该能够有效诊断和解决Docker容器不退出的问题。