docker - 我可以在 Docker 容器中运行多个程序吗?

标签 docker

我试图从部署一个旨在在桌面用户上运行的应用程序的角度开始围绕 Docker 进行研究。我的应用程序只是一个 flask Web 应用程序和 mongo 数据库。通常我会在虚拟机中安装两者,并将主机端口转发到 guest Web 应用程序。我想尝试一下 Docker,但我不确定我打算如何使用多个程序。文档说只能有 ENTRYPOINT 所以我怎么能有 Mongo 和我的 flask 应用程序。或者它们是否需要位于单独的容器中,在这种情况下它们如何相互通信以及这如何使应用程序的分发变得容易?

最佳答案

只能有一个 ENTRYPOINT,但该目标通常是一个脚本,可以启动尽可能多的程序。您还可以使用例如 Supervisord或类似的处理在单个容器内启动多个服务。 This is an example of a docker container running mysql, apache and wordpress within a single container .

假设您有一个数据库供单个 Web 应用程序使用。那么在一个容器中运行两者可能会更容易。

如果您有一个由多个应用程序使用的共享数据库,那么最好在其自己的容器中运行数据库,并在各自的容器中运行应用程序。

当应用程序在不同的容器中运行时,至少有两种可能性可以相互通信:

  1. 使用暴露的 IP 端口并通过它们进行连接。
  2. 最近的 docker 版本 support linking .

关于docker - 我可以在 Docker 容器中运行多个程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19948149/

相关文章:

docker - 容器启动时,dockerfile中的RUN命令会执行吗?

docker 注册表 v2 : get parent image name

docker - Composer 无法加载包无效的版本字符串

mysql - 避免在我的 apache 容器脚本中对 mysql 容器 IP 进行硬编码

docker - 我无法在 Debian 8 Jessie 上安装 Docker

docker - GitLab CE docker 容器在启动时不断崩溃

ruby-on-rails - Docker:COPY 未能找到 Gemfile:没有这样的文件或目录

docker - Docker 中的 Spring Boot

docker - jenkinsci docker install-plugins.sh 构建失败

docker - 在Docker生产服务器上编译Webpack