如果我的问题太基础,我道歉,但我刚开始学习码头工作,并且有些概念对我来说并不清楚。
我认为docker是一个功能齐全的虚拟机,因此我想到将带有一组服务的服务器转换为容器。然后我开始阅读" dockerizing"应用程序(例如postgresql),我学会了Docker file can only have one default instruction, when executing a container。我读到可以使用supervisor协调多个执行指令,但我开始想知道这是否真的是最好的方法,或者是否更倾向于microservices architecture?
为了更好地陈述我的观点,我想描述一下我的用例。我想创建一个提供tomcat(通过servlet部署一些服务)和postgreSQL数据库的环境。理想情况下,我希望服务(和数据库)在同一主机(在不同端口)上运行。
为Tomcat创建一个容器和为数据库创建一个容器是最佳做法,还是最好将它们放在同一个容器中?
如果我创建两个不同的容器,我应该使用哪个框架来编排它们?是Docker compose是否适用于此任务?
答案 0 :(得分:3)
1)
我认为docker是一个功能齐全的虚拟机,因此我想到将带有一组服务的服务器转换为容器。
不,不,不!它不是虚拟机
每个容器只运行一个进程
在几乎所有情况下,您只应在单个容器中运行单个进程。将应用程序分离到多个容器中可以更容易地水平扩展和重用容器。如果该服务依赖于其他服务,请使用容器链接。
阅读编写Dockerfiles的最佳实践https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/
2)
如果我创建两个不同的容器,我应该使用哪个框架来编排它们? Docker是否适合这项任务?
你需要从docker-compose开始。当你对它更加熟悉时,你会让自己有充分理由做出决定。