什么组件应该是“集装箱” – docker

我正在探索在一个新应用程序中使用容器,并查看了大量的内容,并创build了一个沙箱环​​境来探索docker和容器。 我的挣扎更多的是理解哪些组件需要单独容器化,并将多个组件捆绑到我自己的容器中。 在架构这个时需要考虑什么? 例如:我正在构build一个python后端服务,通过webservice调用来执行。 该服务将与Mongo DB和RabbitMQ进行交互。

我的问题是:我应该运行单独的操作系统容器(EG Ubuntu),Python容器,MongoDB容器,兔子MQ容器等? 结合起来,他们都构成我的应用程序的一部分,并通过解耦所有我可以单独缩放的能力?

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

是一个操作系统和python容器实际上需要,因为这将全部运行在与Python的操作系统呢?

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

Docker的理念:在容器中使用微服务。 过去几年来,“微服务Microservice Architecture ”( Microservice Architecture这个术语出现了,它描述了一种将软件应用程序devise成independently deployable services套件的特殊方式。

microservices architecture一些优点是:

  • 更轻松的升级pipe理
  • 消除对单个技术堆栈的长期承诺
  • 改进了故障隔离
  • 使新开发人员更容易理解服务的function
  • 改进的安全

我应该运行单独的操作系统容器(EG Ubuntu),Python容器,MongoDB容器,兔子MQ容器等? 结合起来,他们都构成我的应用程序的一部分,并通过解耦所有我可以单独缩放的能力?

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

所以你将有一个python容器,python服务, MongoDB容器和RabbitMQ容器。

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

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

docker-compose将帮助您协调容器的构build(从docker文件),启动,创build所需的networking,安装所需的卷等。