容器与Docker简介(一)——微软微服务电子书翻译系列

前不久参加了深圳的Azure开源者峰会,会上张善友张老师推荐了微软的一个架构网站:.NET Application Architecture

这几天正好工作比较闲,看了下里面关于微服务架构的介绍,非常详尽。

于是顺带翻译了一下,方便后来人和以后回顾。


容器化是软件开发的一种方法,它可以将应用程序或服务,其依赖性及其配置(比如部署时的配置文件)作为容器镜像打包在一起。 容器化应用程序可以作为一个单元进行测试,并作为容器镜像实例部署到宿主操作系统(OS)。

就像集装箱可以通过船只,火车或者卡车来运输货物,却不用关心货物是什么。容器充当一个可以包含不同代码与依赖的软件的标准单位。通过这种方式容器化软件可以让开发者或者IT从业人员在不修改或者几乎不修改环境的情况下部署软件。

容器还可以用于在共享的操作系统上将应用程序彼此隔离开来。 容器化应用程序运行在容器宿主之上,容器宿主又在操作系统(Linux或Windows)上运行。 因此,容器的占用空间远小于虚拟机(VM)镜像。

每个容器都可以运行一个完整的Web应用或者服务,如下图所示。在这个例子里,Docker宿主是一个容器宿主,App1,App2,Svc1和Svc2都是容器化的应用或服务。

(多个容器运行在一个容器宿主中)

容器化的另一个好处是可扩展性。你可以为短期任务创建一个新容器来快速扩展。从应用的角度看,初始化一个镜像(创建一个容器)类似于起一个Web应用或服务的进程。但是为了可靠性,当你在多个宿主服务器上面运行同一个镜像的多个实例时,通常需要每个容器(镜像实例)运行在不同的宿主服务器或在不同容错域的VM中。

简而言之,容器在整个应用程序工作流的生命周期中提供了隔离性,可移植性,灵活性,可扩展性和可控性的优点。 最重要的有点是隔离了Dev(开发)和Ops(运营)。

原文地址:https://www.cnblogs.com/RobotZero/p/7246625.html