docker技术入门与实战 第3版学习笔记之第1章

第1章 初始dokcer与容器

虚拟机既可以通过 硬件模拟来实现,也可以通过 操作系统软件来实现。而容器技术则更为优雅,它充分利用了操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。因此,有人甚至把它称为“新一代的虚拟化”技术,并将基于容器打造的云平台亲切地称为"容器云”。

什么是docker

docker开源项目背景

Docker 是基于 Go 语言实现的开源容器项目。它诞生于 2013 年年初,最初发起者是 dotCloud 公司。

在 2013 年年底直接改名为 Docker Inc, 并专注于 Docker 相关技术和产品的开发,目前巳经成为全球最大的 Docker 容器服务提供商。官方网 站为 https://www.docker.com/,

Docker 项目已加入 Linux 基金会,并遵循 Apache 2.0 协议,全部开源代码均在https:// github.com/docker 项目仓库进行维护。

现在主流的操作系统包括 Linux 各大发行版、 macOS Windows 等都已经支持 Docker

Docker 的构想是要实现 “Build, Ship and Run Any App, Anywhere" ,即通过对应用的封 (Packaging) 、分发 (Distribution) 、部署 (Deployment) 、运行 (Runtime) 生命周期进行管 理,达到应用组件级别的“一次封装,到处运行”。这里的应用组件,既可以是一个 Web 用、一个编译环境,也可以是一套数据库平台服务,甚至是一个操作系统或集群。

基于 Linux 平台上的多项开源技术, Docker 提供了高效、敏捷和轻量级的容器方案,并支持部署到本地环境和多种主流云平台。可以说, Docker 首次为应用的开发、运行和部署提 供了“一站式”的实用解决方案。

Linux 容器技术一一巨人的肩膀

与大部分新兴技术的诞生一样, Docker 也并非“从石头缝里蹦出来的",而是站在前人的肩膀上。其中最重要的就是 Linux 容器 (Linux Containers, · LXC) 技术。 IBMDeveloper Works 网站关于容器技术的描述十分准确: "容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心 CPU 本地运行指令,而不需要任何专门的解释机制。此外,也避免了准虚拟化 (para-virtualization) 和系统调用替换中的复杂性。"

意思是:

Linux容器技术可以让多个独立的应用程序在同一台服务器上的同一个操作系统实例上运行,每个应用都以为自己独占整个服务器资源。这种技术有效地将由单一操作系统管理的资源划分为独立的组别,从而在不同的应用程序之间进行更好的资源分配和平衡。 相比于传统的虚拟化技术(例如VMware),容器技术的优势在于:

  • 不需要指令级模拟或即时编译:因为容器与宿主机共享同一内核,所以可以直接执行原生指令;
  • 避免了准虚拟化和系统调用替换的复杂性:容器只需要少量的修改就可以运行在宿主机之上,这使得容器更加轻量级,启动更快,效率更高。同时,这也简化了管理和维护的工作量。

从 Linux 容器到 Docker

在LXC 的基础上, Docker 进一步优化了容器的使用体验,让它进入寻常百姓家。首先, Docker 提供了各种容器管理工具(如分发、版本、移植等),让用户无须关注底层的操作,更 加简单明了地管理和使用容器;其次, Docker 通过引入分层文件系统构建和高效的镜像机 制,降低了迁移难度,极大地改善了用户体验。用户操作 Docker 容器就像操作应用自身一 样简单。

可以将 Docker 容器理解为一种轻量级的沙盒 (sandbox)。每个容器内 运行着一个应用,不同的容器相互隔离,容器之间也可以通过网络互相通信。容器的创建和 停止十分快速,几乎跟创建和终止原生应用一致;另外,容器自身对系统资源的额外需求也十分有限,远远低于传统虚拟机

为什么要使用 Docker

Docker 容器虚拟化的好处

Docker 是一种新型的应用部署方式,它允许开发人员将应用程序及其所有依赖项打包到一个轻量级容器中。这个容器可以轻松地在网络上分发并在任何支持 Docker 的平台上运行,无需关心底层操作系统的差异。这种方式极大地提高了开发者的效率,减少了繁琐的配置和迁移问题,并且有助于确保应用在不同环境下的一致行为。

Docker 在开发和运维中的优势

对开发和运维 (DevOps) 人员来说,最梦寐以求的效果可能就是一次创建或配置,之后 可以在任意地方、任意时间让应用正常运行,而Docker 恰恰是可以实现这一终极目标的“瑞 士军刀"。具体说来,在开发和运维过程中, Docker 具有如下几个方面的优势:

  • 更快速的交付和部署。使用 Docker, 开发人员可以使用镜像来快速构建一套标准的 开发环境;开发完成之后,测试和运维人员可以直接使用完全相同的环境来部署代 码。只要是开发测试过的代码,就可以确保在生产环境无缝运行。 Docker 可以快速创建和删除容器,实现快速迭代,节约开发、测试、部署的大量时间。并且,整个过 程全程可见,使团队更容易理解应用的创建和工作过程。
  • 更高效的资源利用。运行 Docker 容器不需要额外的虚拟化管理程序 (Virtual Machine Manager·, VMM, 以及 Hypervisor) 的支持, Docker 是内核级的虚拟化,可以实现更 高的性能,同时对资源的额外需求很低。与传统虚拟机方式相比, Docker 的性能要 提高 1~2 个数量级
  • 更轻松的迁移和扩展。 Docker 容器儿乎可以在任意的平台上运行,包括物理机、虚 拟机、公有云、私有云、个人电脑、服务器等,同时支持主流的操作系统发行版本。 这种兼容性让用户可以在不同平台之间轻松地迁移应用。
  • 更简单的更新管理。使用 Dockerfile, 只需要小小的配置修改,就可以替代以往大量 的更新工作。所有修改都以增量的方式被分发和更新,从而实现自动化并且高效的容 器管理。
  • Docker是一种新型的应用部署方式,具有以下优点:

    • 更快的交付和部署:开发人员可以通过使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用完全相同的环境来部署代码。只要是开发测试过的代码,就可以确保在生产环境无缝运行。
    • 更高的资源利用率:运行Docker容器不需要额外的虚拟化管理程序的支持,可以实现更高的性能,同时对资源的需求更低。
    • 更轻松的迁移和扩展:Docker容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,同时支持主流的操作系统发行版本。
    • 更简单的更新管理:使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。所有修改都以增量的方式被分发和更新,从而实现自动化并且高效的容器管理。

    总的来说,Docker提供了一种更加灵活和高效的方式来部署和管理应用,大大提升了开发和运维的效率。

    Docker 与虚拟机比较

    作为一种轻量级的虚拟化方式, Docker 在运行应用上跟传统的虚拟机方式相比具有如下 显著优势:

  • Docker 容器很快,启动和停止可以在秒级实现,这相比传统的虚拟机方式(数分钟) 要快得多;
  • Docker 容器对系统资源需求很少,一台主机上可以同时运行数千个 Docker 容器(在 IBM 服务器上已经实现了同时运行 lOK 量级的容器实例);
  • Docker 通过类似 Git 设计理念的操作来方便用户获取、分发和更新应用镜像,存储复 用,增量更新;
  • Docker 通过 Dockerfile 支持灵活的自动化创建和部署机制,以提高工作效率,并标准 化流程。
  • docker与虚拟化

    虚拟化 (virtualization) 技术是一个通用的概念,在不同领域有不同的理解。在计算领 域,一般指的是计算虚拟化 (computing virtualization) ,或通常说的服务器虚拟化。维基百科 上的定义如下:

    ”在计算机技术中,虚拟化是一种资源管理技术,是将计算机的各种实体资 源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结 构间的不可切割的障碍,使用户可以用比原本的组态更好的方式来应用这些资源。”

    虚拟化的核心是对资源的抽象,目标往往是为了在同一个主机上同时运行多个系 统或应用,从而提高系统资源的利用率,并且带来降低成本、方便管理和容错容灾等好处。

    基于软件的虚拟化从对象所在的层次,又可以分为应用虚拟化和平台虚拟化(通常说的 虚拟机技术即属于这个范畴)。前者一般指的是一些模拟设备或诸如 Wine 这样的软件,后者 又可以细分为儿个子类:

  • 完全虚拟化。虚拟机模拟完整的底层硬件环境和特权指令的执行过程,客户操作系 统无须进行修改。例如 IBMp 系列的虚拟化、 VMware Workstation VirtualBox QEMU 等;
  • 硬件辅助虚拟化。利用硬件(主要是 CPU) 辅助支持(目前 x86 体系结构上可用的硬 件辅助虚拟化技术包括 Intel-VT AMD-V) 处理敏感指令来实现完全虚拟化的功能, 客户操作系统无须修改,例如 VMware Workstation, Xen,. KVM;
  • 部分虚拟化。只针对部分硬件资源进行虚拟化,客户操作系统需要进行修改。现在有 些虚拟化技术的早期版本仅支持部分虚拟化;
  • 超虚拟化 (paravirtualization) 。部分硬件接口以软件的形式提供给客户机操作系统, 客户操作系统需要进行修改,例如早期的 Xen;
  • 操作系统级虚拟化。内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同 的进程。容器相关技术即在这个范畴。
  • Docker 以及其他容器技术都属于操作系统虚拟化这个范畴,操作系统虚拟化最大 的特点就是不需要额外的 supervisor 支持。

    传统方式是在硬件层面实现虚拟化,需要有额外的虚拟机管理应用和虚拟机操作系统 层。 Docker 容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,因此更加 轻量级。复用本地的操作系统,不需要单独的虚拟机操作系统

    总结

    虚拟机是一种通过硬件模拟或操作系统软件实现的虚拟化技术,而容器技术则更为轻量级和灵活,充分利用操作系统本身的机制和特性进行虚拟化。Docker是一个基于Go语言开发的开源容器项目,提供了高效、敏捷和轻量级的容器方案,可以快速创建、分发和部署应用。相比于传统的虚拟机方式,Docker具有更快的启动速度、更高的资源利用率、更方便的迁移和扩展以及更简化的更新管理。虚拟化的核心是对资源的抽象,通过虚拟化技术可以提高系统资源利用率、降低成本、方便管理和容错容灾。与传统虚拟化方式相比,Docker容器在操作系统层面实现虚拟化,复用本地主机的操作系统,更加轻量级。

    ©著作权归作者所有,转载或内容合作请联系作者
    • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
      沈念sama阅读 218,204评论 6 506
    • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
      沈念sama阅读 93,091评论 3 395
    • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
      开封第一讲书人阅读 164,548评论 0 354
    • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
      开封第一讲书人阅读 58,657评论 1 293
    • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
      茶点故事阅读 67,689评论 6 392
    • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
      开封第一讲书人阅读 51,554评论 1 305
    • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
      沈念sama阅读 40,302评论 3 418
    • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
      开封第一讲书人阅读 39,216评论 0 276
    • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
      沈念sama阅读 45,661评论 1 314
    • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
      茶点故事阅读 37,851评论 3 336
    • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
      茶点故事阅读 39,977评论 1 348
    • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
      沈念sama阅读 35,697评论 5 347
    • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
      茶点故事阅读 41,306评论 3 330
    • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
      开封第一讲书人阅读 31,898评论 0 22
    • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
      开封第一讲书人阅读 33,019评论 1 270
    • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
      沈念sama阅读 48,138评论 3 370
    • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
      茶点故事阅读 44,927评论 2 355

    推荐阅读更多精彩内容