前不久参加了深圳的Azure开源者峰会,会上张善友张老师推荐了微软的一个架构网站:.NET Application Architecture服务器
这几天正好工做比较闲,看了下里面关于微服务架构的介绍,很是详尽。架构
因而顺带翻译了一下,方便后来人和之后回顾。微服务
容器化是软件开发的一种方法,它能够将应用程序或服务,其依赖性及其配置(好比部署时的配置文件)做为容器镜像打包在一块儿。 容器化应用程序能够做为一个单元进行测试,并做为容器镜像实例部署到宿主操做系统(OS)。测试
就像集装箱能够经过船只,火车或者卡车来运输货物,却不用关心货物是什么。容器充当一个能够包含不一样代码与依赖的软件的标准单位。经过这种方式容器化软件可让开发者或者IT从业人员在不修改或者几乎不修改环境的状况下部署软件。网站
容器还能够用于在共享的操做系统上将应用程序彼此隔离开来。 容器化应用程序运行在容器宿主之上,容器宿主又在操做系统(Linux或Windows)上运行。 所以,容器的占用空间远小于虚拟机(VM)镜像。操作系统
每一个容器均可以运行一个完整的Web应用或者服务,以下图所示。在这个例子里,Docker宿主是一个容器宿主,App1,App2,Svc1和Svc2都是容器化的应用或服务。翻译
(多个容器运行在一个容器宿主中)blog
容器化的另外一个好处是可扩展性。你能够为短时间任务建立一个新容器来快速扩展。从应用的角度看,初始化一个镜像(建立一个容器)相似于起一个Web应用或服务的进程。可是为了可靠性,当你在多个宿主服务器上面运行同一个镜像的多个实例时,一般须要每一个容器(镜像实例)运行在不一样的宿主服务器或在不一样容错域的VM中。生命周期
简而言之,容器在整个应用程序工做流的生命周期中提供了隔离性,可移植性,灵活性,可扩展性和可控性的优势。 最重要的有点是隔离了Dev(开发)和Ops(运营)。进程