Dockerize应用程序或机器?

我很抱歉,如果我的问题太基本了,但是我刚刚开始学习docker,并且有一些概念对我来说是不清楚的。

我认为docker是一个function齐全的虚拟机,因此我想将一个服务器转换成一个容器。 然后我开始阅读“dockerizing”应用程序(例如postgresql ),并且我知道Docker文件在执行容器时只能有一个默认指令 。 我读过可以使用一个主pipe协调多个执行指令,但是我开始想知道这是否是最好的方法,还是倾向于微服务架构 ?

为了更好地说明我的观点,我想描述一下我的用例。 我想创build一个提供tomcat(通过servlet部署的服务)和postgreSQL数据库的环境。 理想情况下,我希望服务(和数据库)在相同的主机(在不同的端口上)运行。

为Tomcat创build一个容器,为数据库创build一个容器是最佳做法,还是将它们放在同一个容器中更好?

如果我创build两个不同的容器,我应该使用哪个框架来编排它们? 这个任务是Docker组合吗?

1)

我认为docker是一个function齐全的虚拟机,因此我想将一个服务器转换成一个容器。

不,不! 这不是虚拟机

每个容器只运行一个进程

在几乎所有情况下,您只应该在一个容器中运行一个进程。 将应用程序解耦为多个容器使得横向扩展和重复使用容器变得更容易。 如果该服务依赖于另一个服务,则使用容器链接。

阅读编写Dockerfiles的最佳实践https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/

2)

如果我创build两个不同的容器,我应该使用哪个框架来编排它们? 这个任务是Docker组合吗?

您需要先从docker-compose开始。 当你更熟悉它的时候,你会让自己做出有理由的决定。