2017-03-01 36 views
1

我正在探索在新应用程序中使用容器,并且已经查看了大量内容并创建了沙箱环境以探索docker和容器。我的挣扎更多的是理解哪些组件需要单独容器化,并将多个组件捆绑到我自己的容器中。在构建这一点时需要考虑什么? 例如: 我正在构建一个python后端服务,通过webservice调用来执行。 该服务将与Mongo DB和RabbitMQ进行交互。我的问题是: 我应该运行单独的操作系统容器(EG Ubuntu),Python容器,MongoDB容器,Rabbit MQ容器等吗?将它们组合成为我的应用程序的一部分,并将所有我能够单独缩放的功能进行分离?什么组件应该是“集装箱” - Docker

我怎么能捆绑/链接这些部署不失去耦的好处/分解成单个容器

实际需要,因为这OS和Python的容器都将与Python的操作系统上运行无论如何?

很想看看人们是如何解决这个问题的?

回答

1

Docker的理念:在容器中使用微服务。在过去的几年里,术语“Microservice Architecture”出现了,描述了软件应用程序设计的一种特殊方式,作为套件independently deployable services

microservices architecture一些优点是:

  • 更容易升级管理
  • 消除长期致力于单一的技术栈
  • 提高故障隔离
  • 更容易为新的开发人员理解服务的功能
  • 安全性提高
  • ...

我应该运行单个OS容器(例如Ubuntu的),Python的集装箱, MongoDB的集装箱,兔MQ容器等?他们都组成他们所有的形式 我的应用程序的一部分,并通过解耦所有我有能力 个别缩放?

你不需要一个单独的操作系统容器。每个容器都将使用Docker主机的内核,并且仅包含所需的二进制文件,例如python二进制文件。

所以,你都会有,一个python容器您蟒蛇服务,MongoDB容器和容器RabbitMQ

我怎样才能捆绑/链接这些部署,而不会损失 解耦/分解成单个容器的好处?

对于部署,您将使用dockerfiles + docker-compose文件。Dockerfiles包含创建泊坞窗镜像的说明。如果您只是使用官方库图片,则不需要dockerfiles。

docker-compose会帮助您协调容器建立(从泊坞窗文件),初创企业,创建所需的网络,安装需要的卷等

+0

很大的反响 - 谢谢你 – user3927078