Docker如何用于多层应用程序?

时间:2015-03-28 07:07:57

标签: docker

我试图了解docker如何用于dockerize多层应用程序。

我的tomcat应用程序需要mongodb,mysql,redis,solr和rabbitmq。我现在和Docker玩了几个星期。我能够安装和使用mongo / mysql容器。但我没有得到如何使用Docker完全发送应用程序。我几乎没有问题。

图像应该如何。我应该有一个安装了所有组件的图像,或者有单独的图像(例如一个用于tomcat,一个用于mongo,一个用于mysql等),并使用docker之外的bash脚本启动这些容器。

什么是一次维护多个容器的docker方式。意思是说我有多个容器(比如mongo,mysql,tomcat等......)需要一起工作来运行我的应用程序,是否有任何内置的处理方式,以便一个命令/脚本执行此操作?

假设我将我的应用程序停靠,我如何管理需要执行的各种例行任务,如增量代码部署,数据库补丁等。目前我们正在使用vagrant,我们还使用fabric和vagrant来完成各种任务。就像流浪者一样我们将fab任务用于所有类型的日常事务,例如代码部署,数据库刷新,添加卷,启动/停止服务等。这样做的对象是什么?

如果由于高CPU等导致VM崩溃,则使用Vagrant主机系统不受影响。但我看到码头正在占用大量的主机资源。我们可以为那个容器等提供不超过一个cpu核心的限制吗??

因为我们使用流浪汉,所以上面的大多数问题都在这种情况下。当我开始使用docker时,我认为docker是一种可视化技术,可以替代我们巨大的基于Vagrant的infra。如果我错了请纠正我?

2 个答案:

答案 0 :(得分:1)

我建议你看看docker-compose

  • 您将能够定义应用程序的体系结构
  • 然后您可以轻松地构建它并运行它(使用一个命令)
  • 与dev和prod相同的设置

答案 1 :(得分:1)

对于微服务,组合等我不会重新发布。

对于容器资源分配:

Docker运行有各种资源控制选项(使用谷歌cgroups)看到我的要点

https://gist.github.com/afolarin/15d12a476e40c173bf5f