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,分期,生产环境)运行。

容器与Docker简介(二)什么是DOCKER——微软微服务电子书翻译系列的更多相关文章

  1. 容器与Docker简介(三)Docker相关术语——微软微服务电子书翻译系列

    本节列出了在更加深入Docker之前应该熟悉的术语和定义. 有关详细的定义,请参阅Docker提供的术语表. 容器镜像(Container image):具有创建容器所需要的所有依赖和信息的包. 镜像 ...

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

    前不久参加了深圳的Azure开源者峰会,会上张善友张老师推荐了微软的一个架构网站:.NET Application Architecture 这几天正好工作比较闲,看了下里面关于微服务架构的介绍,非常 ...

  3. 容器与Docker简介(四)Docker容器,镜像与 Registries——微软微服务电子书翻译系列

    当使用Docker时,开发人员创建一个应用程序或服务,并将其和其依赖关系打包到容器镜像中. 镜像是应用程序或服务及其配置和依赖的静态表示形式. 要运行应用程序或服务,应用程序的镜像将被实例化以创建一个 ...

  4. Docker—微软微服务

    容器与Docker简介(一)——微软微服务电子书翻译系列 容器与Docker简介(二)什么是DOCKER——微软微服务电子书翻译系列 容器与Docker简介(三)Docker相关术语——微软微服务电子 ...

  5. Docker实战(二)之操作Docker容器

    容器是Docker的另外一个核心概念.简单来说,容器是镜像的一个运行实例.所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层.如果认为虚拟机是模拟运行的一整套操作系统系统(包括内核,应 ...

  6. 深入浅出Docker(二):Docker命令行探秘

    1. Docker命令行 Docker官方为了让用户快速了解Docker,提供了一个交互式教程,旨在帮助用户掌握Docker命令行的使用方法.但是由于Docker技术的快速发展,此交互式教程已经无法满 ...

  7. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...

  8. Docker(二):Docker镜像使用

    1.Docker Image介绍 简单来说,Docker Image是用来启动容器的只读模板. Docker Image被划分了三个部分:Remote-dockerhub.com/namespace/ ...

  9. Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

随机推荐

  1. 2015211230108《Java程序设计》第10周学习总结

    1. 本周学习总结 2. 书面作业 Q1.finally 题目4-2 1.1 截图你的提交结果(出现学号) 1.2 4-2中finally中捕获异常需要注意什么? finally的作用: 1.确定程序 ...

  2. jquery-post get 同步问题

    解决方法1: 在全局设置: $.ajaxSetup({ async : false }); 然后再使用get.post请求 $.get("register/RegisterState&quo ...

  3. Vuforia开发完全指南---不懂编程也能做AR程序

    不懂编程也能做AR程序 可能一听到要做AR程序,很多人都会想到这是程序员的事.如果不懂编程,不会写代码,是做不了AR程序的.其实,Vuforia的Unity SDK非常人性化,即使你不会编程,也能做出 ...

  4. [UIKit学习]06.懒加载,模型,自定义代码段,重写构造方法

    懒加载 在get中加载,且只加载一次 - (NSArray *)shops { if (_shops == nil) { NSString *file = [[NSBundle mainBundle] ...

  5. 基于React Native的移动平台研发实践分享

    转载:http://blog.csdn.net/haozhenming/article/details/72772787 本文目录: 一.React Native 已经成为了移动前端技术的趋势 二.基 ...

  6. Vuforia开发完全指南(四)--- Image Target

    Vuforia开发完全指南---Image Target,简单方便的AR图像识别 概述 在Vuforia提供的SDK中,最简单.也是最常见的AR功能就是Image Target---图像识别.你只需提 ...

  7. bzoj1036 [ZJOI2008]树的统计

    一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从 ...

  8. combobox数据获取及使用总结

    写在前面 和队友完成工程实践项目过程中遇到combobox数据项加载失败的问题,我将记录下解决该问题中不断填坑的过程. 这是可以确定的填写正确的combobox内容 action也没有错误,Strut ...

  9. NDK各个版本链接

    ndk_r15c (July 2017) Windows 32-bit : https://dl.google.com/android/repository/android-ndk-r15c-wind ...

  10. PHP常用字符串处理函数

    (1)strlen(string) 返回字符串长度 (2)strpos(string,find,begin) 返回find字符串第一次出现的位置(从0开始) string:处理的字符串 find:想找 ...