容器与Docker简介(二)什么是DOCKER——微软微服务电子书翻译系列

 

Docker是一个开源项目,用于将应用程序部署自动化,作为可在云端或本地运行的可移植,自包含的容器。 Docker同时也是一家促进和发展这项技术的公司,与云,Linux以及Windows的供应商(包括Microsoft)合作。

(图2-2 Docker将容器部署到混合云的所有分层上)

 

Docker镜像原生支持在Linux和Windows上运行,但Windows镜像只能运行在Windows宿主而Linux镜像也只能运行在Linux宿主上,这里的"宿主"指服务器或者VM。

 

开发者可以在Windows,Linux或者macOS上使用开发环境,他们只需要运行一个Docker宿主,然后其中会装载Docker镜像与其应用还有应用的依赖。 在Linux或Mac上工作的开发人员使用基于Linux的Docker宿主,并且只能为Linux容器创建镜像。 (Mac上的开发人员可以编辑代码或从macOS运行Docker CLI,但在撰写本篇文章时,容器尚不能直接在MacOS上运行。)在Windows上工作的开发人员可以为Linux或Windows 容器创建镜像。

 

为了在开发环境中托管容器并提供其他开发工具,Docker为Windows与MacOS提供了Docker Community Edition(CE)。 它会安装必要的VM(Docker宿主)来托管容器。 Docker还提供了Docker Enterprise Edition(EE),专门为企业开发而设计,由开发,部署和运行大型关键业务应用程序的IT团队使用。

 

运行Windows 容器有两种方式:

  • Windows服务器通过进程与命名空间提供应用的隔离。Windows服务器与容器宿主共享同一个内核,并且所有的容器都会运行在这个宿主之上。
  • Hyper-V容器通过在高度优化过的虚拟机中运行每个容器来扩展Windows服务器提供的隔离。 在这样的配置下,容器宿主的内核不与Hyper-V 容器共享,提供更好的隔离。

 

这些容器镜像的创建方式和功能相同。 不同之处在于如何从镜像创建容器 —— 运行Hyper-V容器需要额外的参数。 有关详细信息,请参阅Hyper-V Containers。

 

Docker容器与虚拟机对比

图2-3 展示了Docker与虚拟机之间的一些对比。

 

(图2-3 VM  )

(图2-3 容器)

 

虚拟机包括应用程序,及其所需的库或二进制文件,以及完整的客户机操作系统。 完全虚拟化需要比容器化更多的资源。 容器包括应用程序及其所有依赖。 但是,它们与其他容器共享操作系统内核,作为用户空间的隔离进程运行在宿主操作系统。 (除了Hyper-V容器,各个容器在其专用虚拟机内部运行)

 

由于容器需要的资源少得多(例如,它们不需要完整的操作系统),因此它们易于部署,并且可以快速启动。 这允许你具有更高的部署密度,也就是说你可以在同一硬件单元上运行更多的服务,从而降低成本。

镜像的主要目的是使得环境(依赖)在不同的部署环境中是相同的。 这意味着你可以在自己的机器上调试,然后将其部署到另一台机器而能够保证环境相同。

容器镜像是一种打包应用程序或服务并以可靠和可复用的方式进行部署的方法。 可以说Docker不仅是技术,也是思想体系和软件过程。

当使用Docker时,你不会再听到开发人员说:“它在我的机器上正常工作,却不能在生产环境中好好工作?”他们可以简单地说“它在Docker上运行”,因为打包的Docker应用程序可以在任何支持Docker的环境上运行,并且 它将以所指定的部署策略(开发,QA,分期,生产环境)运行。

posted @ 2017-07-28 15:16  ShiningRush  阅读(579)  评论(0编辑  收藏  举报