什么组件应该是“集装箱” – 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,安装所需的卷等。