Dockerize应用程序或机器?

时间:2016-03-23 09:29:47

标签: docker virtual-machine containers docker-compose microservices

如果我的问题太基础,我道歉,但我刚开始学习码头工作,并且有些概念对我来说并不清楚。

我认为docker是一个功能齐全的虚拟机,因此我想到将带有一组服务的服务器转换为容器。然后我开始阅读" dockerizing"应用程序(例如postgresql),我学会了Docker file can only have one default instruction, when executing a container。我读到可以使用supervisor协调多个执行指令,但我开始想知道这是否真的是最好的方法,或者是否更倾向于microservices architecture

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

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

如果我创建两个不同的容器,我应该使用哪个框架来编排它们?是Docker compose是否适用于此任务?

1 个答案:

答案 0 :(得分:3)

1)

  

我认为docker是一个功能齐全的虚拟机,因此我想到将带有一组服务的服务器转换为容器。

不,不,不!它不是虚拟机

每个容器只运行一个进程

在几乎所有情况下,您只应在单个容器中运行单个进程。将应用程序分离到多个容器中可以更容易地水平扩展和重用容器。如果该服务依赖于其他服务,请使用容器链接。

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

2)

  

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

你需要从docker-compose开始。当你对它更加熟悉时,你会让自己有充分理由做出决定。