首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Docker容器中可以运行多个程序吗?

在Docker容器中可以运行多个程序吗?
EN

Stack Overflow用户
提问于 2013-11-13 15:44:40
回答 4查看 130.1K关注 0票数 163

我试图从部署一个在桌面用户上运行的应用程序的角度来考虑Docker。我的应用程序是一个简单的flask web应用程序和mongo数据库。通常,我会在VM中安装,并将主机端口转发到来宾web应用程序。我想尝试一下Docker,但我不确定我应该如何使用多个程序。文档说只能有入口点,所以我怎么才能有Mongo和我的flask应用程序呢?或者它们需要在不同的容器中,在这种情况下,它们如何相互通信,这如何使分发应用程序变得容易?

EN

回答 4

Stack Overflow用户

发布于 2019-06-19 16:22:54

虽然不建议您使用wait在前台运行2个进程。只需使用以下内容创建一个bash脚本。例如start.sh

代码语言:javascript
复制
# runs 2 commands simultaneously:

mongod & # your first application
P1=$!
python script.py & # your second application
P2=$!
wait $P1 $P2

在您的Dockerfile中,以

代码语言:javascript
复制
CMD bash start.sh

如果您想同时运行多个进程,我建议您设置一个本地Kubernetes集群。您可以通过提供一个简单的Kubernetes清单来“分发”应用程序。

票数 10
EN

Stack Overflow用户

发布于 2013-11-13 19:08:22

它们可以在不同的容器中,实际上,如果应用程序还打算在更大的环境中运行,它们可能会在更大的环境中运行。

一个多容器系统需要更多的编排才能产生所有需要的依赖,尽管在Docker中,有一个新的工具内置在v0.6.5+中-- Linking。然而,对于多机解决方案,它仍然需要从Docker环境之外进行安排。

对于两个不同的容器,这两个部分仍然通过TCP/IP进行通信,但除非端口被特别锁定(不推荐,因为您将无法运行多个副本),否则您必须传递数据库暴露给应用程序的新端口,以便它可以与Mongo通信。这也是链接可以帮助解决的问题。

对于更简单、更小的安装,其中所有依赖项都放在同一个容器中,也可以让数据库和Python运行时都由最初作为入口点调用的程序启动。这可以像shell脚本一样简单,也可以像其他一些进程控制器一样-- Supervisord非常流行,在公共number文件中有许多示例。

票数 6
EN

Stack Overflow用户

发布于 2013-12-15 07:45:23

我同意其他答案,即使用两个容器是更可取的,但如果你想在一个容器中绑定多个服务,你可以使用像supervisord这样的东西。

例如,在Hipache中,包含的Dockerfile运行supervisord,而文件supervisord.conf指定同时运行hipache和redis-server。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19948149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档