我想在Amazon EC2 Ubuntu上运行Docker容器和单独的node.js应用程序,并让它们不断运行。我运行的节点应用程序nohup
工作正常,但我想同时运行Docker和节点应用程序,以使它们同时工作或失败。另外,它们应该在故障后自动重新启动。 (当我在屏幕上运行docker时,它会在一段时间后失败。)完成此操作的简单方法是什么?我注意到了诸如Supervisor之类的工具,但我不确定哪种工具专门用于此目的。如何让Docker容器和节点应用程序在EC2上运行?
回答
正如我在评论中写道,这将有助于有关于究竟是什么的详细信息你正试图完成,为什么你必须在你的过程之间强制循环依赖。在大多数情况下,最好避免循环依赖。我怀疑你正试图解决的可能是more simple solution to the underlying problem。我建议你重新考虑你的架构,看看你是否不能实现组件的松散耦合。这将大大简化你的操作。尽管如此,管理进程之间的依赖关系仍然是一个足够合理的关注点,所以下面是对您的问题的一般答案。
Upstart是ubuntu通过trusty的默认init守护进程。它很容易配置,并可以在失败时重新启动应用程序。对于未来的版本,debian和ubuntu将切换到systemd。新贵和systemd都提供管理依赖关系的机制。 Upstart的stop on stopped看起来像是你想要的,尽管我自己从未尝试过。 Systemd允许您为a service指定ExecStop
和FailureActions
,其中一个可用于在适当情况下杀死相关服务。 Systemd可能会提供一个我不知道的更合适的控制机制。
管理依赖关系的另一种方法是让supervisord在容器内同时管理node.js和其他进程。 Supervisor不是启动和停止容器的好工具,但它非常适合管理容器内的进程。通过一些编码,你可以创建一个自定义的listener,它也可以在容器内运行,并且如果任何一个进程终止,它将指示主管退出。这种方法的优点是你可以在你的容器中可移植地封装你的依赖关系。然后,您可以使用upstart或systemd来启动容器,您只需确保容器在退出时重新启动。
谢谢我要试试Upstart或systemd。 – 2014-09-03 14:31:16
@ am-rails祝你好运。如果你打算接受我的回答,在赏金结束之前这样做会很体贴。 – 2014-09-05 07:20:32
- 1. 从Docker容器中运行的另一个节点应用程序启动节点应用程序
- 2. Docker swarm只能在容器运行的节点上访问
- 3. 如何让节点应用程序运行?
- 4. Docker和Julia - 如何让.jl文件在容器中运行
- 5. 在节点群集上运行多个节点应用程序
- 6. Linux + Docker - 如何从Docker容器中运行主机的应用程序?
- 7. Docker Swarm + Docker撰写:在不同的节点上运行链接的容器?
- 8. 试图在Fedora服务器上运行节点应用程序
- 9. 在Docker容器中运行的应用程序不可访问?
- 10. 在Docker容器中运行JHipster应用程序 - Websocket错误
- 11. 如何使用nginx在EC2上运行两个应用程序
- 12. 如何在同一台主机上运行Angular Client应用程序和节点服务器应用程序
- 13. 在MacBookPro主机上运行Docker容器上的GUI应用程序
- 14. 在Windows 10上的Docker容器上运行桌面应用程序
- 15. 如何让Facebook应用程序在example.com和www.example.com上运行?
- 16. Jetty Docker容器运行弹簧应用程序无法连接到在Docker容器外运行的mysql
- 17. 如何在ec2上运行node.js应用程序
- 18. 在AWS Elastic Beanstalk上运行Docker容器 - 我的Web应用程序在哪里?
- 19. 如何在mac上的docker中运行流星应用程序?
- 20. 如何在Docker for Mac上运行GUI应用程序?
- 21. 如何在docker-py中运行基本web应用程序容器?
- 22. 如何显示在Docker容器内运行的Python应用程序的输出?
- 23. 如何让docker在docker中运行?
- 24. 如何在高山linux docker容器上运行crond和vsftpd?
- 25. 错误在官方Ruby镜像的Docker容器上运行rails应用程序
- 26. 如何在Docker容器中运行Lektor?
- 27. 无法让节点JS应用程序中的Firebase运行
- 28. 如何在swarm管理器所在的机器上运行docker swarm节点?
- 29. 节点应用程序永远运行?
- 30. 在Docker中运行Angular2应用程序
我还没有看过它,但最新版本的docker有新的重新启动策略功能,请参阅:http://blog.docker.com/2014/08/announcing-docker-1-2-0/ – 2014-08-27 17:07:17
你想要在Docker镜像中运行node.js进程吗? – fabrizioM 2014-08-27 18:14:01
@fabrizioM,没有node.js单独运行,但它与docker实例进行通信。 – 2014-08-27 18:54:21