作为 IT 工程师,以下是几种确保 Docker 容器不会退出的有效方法:
最推荐的方法是让容器运行一个前台进程:
CMD ["your_command"]
# 或
ENTRYPOINT ["your_command"]
确保 your_command
是一个持续运行的前台进程(如 Nginx、Node.js 服务器等)。
如果容器没有需要持续运行的服务,可以使用这个经典方法:
CMD tail -f /dev/null
这会创建一个永不结束的进程,保持容器运行。
类似的方法:
CMD while true; do sleep 1; done
在运行容器时指定重启策略:
docker run --restart unless-stopped your_image
可选策略:
- no
- 不自动重启(默认)
- on-failure
- 只在非0退出码时重启
- always
- 总是重启
- unless-stopped
- 总是重启,除非显式停止
对于复杂应用,可以在容器内使用进程管理工具:
RUN apt-get update && apt-get install -y supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]
如果容器意外退出,检查日志找出原因:
docker logs container_name
docker inspect container_name
-d
和 --restart
组合时产生"僵尸"容器docker-compose
或编排工具管理容器生命周期选择哪种方法取决于您的具体需求。对于生产环境,推荐使用实际服务作为前台进程或配合适当的重启策略。