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. 201521123113《Java程序设计》第10周学习总结

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

  2. 201521044091 java 第十周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常与多线程相关内容. Runnable不是线程,Thread才是,必须将实现Runnable接口的类的对象放入Thread中才能在 ...

  3. java实现oracle数据库基本操作

    import java.sql.*; import java.util.ArrayList; import java.util.List; //使用jdbc连接 public class TestOr ...

  4. 阿里云linux centos 一键部署web环境--图文详解

    一.购买阿里云服务器ECS 1,登录阿里云,选择阿里云服务器ECS 2,创建实例 或 3,选好配置 4,完成配置 注:记住用户名和密码 二.一键配置linux环境 1,下载xshell,安装成功后,建 ...

  5. CentOS 7安装squid代理服务器

    Squid,一个高性能的代理缓存服务器,支持FTP.gopher.HTTP协议. Squid,一个缓存Internet 数据的软件,其接收用户的下载申请(作为代理服务器),并自动处理所下载的数据,并返 ...

  6. LInux ugo权限详解

    Linux 中的用户和组是用来控制使用者或者进程可以或者不可以使用哪些资源和硬件,是Linux权限控制最基本的方式. 用户和组可以看一下上一章的部分,先来看一下权限. 一.权限概览 在Linux下,使 ...

  7. Linux入门之常用命令(9)进程及端口查看

    [Linux下查看进程] 查看程序对应进程号:ps –ef|grep 程序名 查看进程占用端口:ss -pl | grep 进程号 [通过进程查看端口] 查看占用的端口号:netstat –nltp| ...

  8. Digital Square 搜索

    Digital Square Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Subm ...

  9. hdu4578 线段树 三次方,二次方,一次方的值

    Yuanfang is puzzled with the question below: There are n integers, a 1, a 2, -, a n. The initial val ...

  10. http://codeforces.com/problemset/problem/545/D

    D. Queue time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...