docker os 容器与应用程序容器

docker os container vs app container

我不确定使用 docker 容器的最佳做法是什么。当我使用 VM 时,比如 ubuntu,对于 运行 网络应用程序,我安装了 运行 应用程序所需的所有软件,例如数据库、网络服务等,并像独立的一样使用操作系统。

但是,Docker 可以用不同的方式使用。

鉴于我想要 运行 网络应用程序的场景,我有两个选择:

  1. 将所有软件安装在一个容器上;安装数据库,java,以及 运行 所需的所有其他必要软件(即像我使用 VM 一样使用)。

  2. 将每个应用程序安装在单独的容器上;一个容器中的数据库,另一个容器中的 Web 服务,并让它们相互通信。

选项 1) 似乎更容易部署全栈应用程序,但如果包之间存在一些依赖性复杂问题或为每个软件分配 OS 资源,则可能更难扩展。

选项 2) 似乎更难部署,但每个容器都可以轻松升级。

Docker 用户的常见做法是什么?

编辑:https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#run-only-one-process-per-container

中也注明了对此的回答

最好的方法是为每个服务(应用程序)使用一个单独的容器。通过这种方式,您可以 upgrade/modify 每个服务独立于其他容器。 Docker 非常适合微服务架构。

使用 Docker Compose 运行 只需一个命令即可连接所有容器:docker-compose up。在 Docker Compose 中,您可以定义容器之间的依赖关系。所以,他们会自动连接。

如果你想 运行 每个容器都在一个单独的 Linux 主机上,你可以使用 Docker Swarm 这样你就不必关心网络了。