Docker学习笔记——Docker简介_第1张图片

  • 官方定义:Docker是一个能够把开发的应用程序自动部署到容器的开源引擎。由 Docker Inc. 公司 前 dotC1oud公司, PaaS市场中的老牌提供商)的团队编写,基于 Apache 2.0开源授权协议发行。

  • 程序员能理解的定义:Docker是Docker Inc. 公司开源的一个基于Linux技术构建容器的容器引擎,其源代码在GitHub上,基于Go语言开发并遵从Apache 2.0协议;

  • 普通人能理解的定义:“没有集装箱,就不会有全球化。”而Docker就是IT领域里改变世界的“集装箱”;

  • 圈里人总结:Docker是一套以容器技术为核心的IT标准化构建体系。它不仅仅是一项技术,更不仅仅是一家公司,Docker必将改变整个IT世界,让“Build Ship Run”来的更猛烈些吧!

Docker优势 – 更轻量、更快速、更便捷

  • 对开发人员来说:Docker提供了简单快速的隔离环境,无需再为配置环境操心,让程序跑到哪都一样;

  • 对运维人员来说:Docker可以快速构建出一整套无状态分布式基础设施,使得运维工作可以通过程序化的脚本来完成;

  • 对业务人员来说:从每月或每周才能发布的新版本到只需1小时就能发布完毕,迅速满足用户新需求;

  • 标准化应用发布:Docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;

  • 节约时间:快速部署和启动,VM启动一般是分钟级,Docker容器启动是秒级;

  • 方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;

  • 节约成本:以前一个虚拟机至少需要几个G的磁盘空间,Docker容器可以减少到MB级;

  • 方便持续集成:通过与代码进行关联使持续集成非常方便;

  • 可以作为集群系统的轻量主机或节点:在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。

如何学习Docker

  1. 学习Docker,如果没有云计算的基本知识,以及内核的基本知识,那么学习并理解起来会稍吃力。作为容器,Docker容器的优势在哪,不足在哪,最好了解容器的实现是怎样的(简单了解);拥有镜像管理,Docker又该如何体现软件开发,集成,部署,发布,再迭代的软件生命周期管理优势。

  2. 关于学习资源,起码的硬件设施总是要有的。Docker及其生态的发展很快,不使用纯理论肯定收效甚微。另外,资源还包括Docker官方,各大电子媒体平台,技术论坛,开源社区等,往往大牛的观点能点破自己的困惑,或者让自己知道哪方面的认识还很欠缺,以及让自己少走很多的弯路。

  3. 个人兴趣的话,归结为强扭的瓜不甜。起码应该认同Docker的设计价值,以及Docker的未来潜力,当然有依据的批判Docker并带动大家的思考,也是深切关注的表现。

  4. 个人发展方向,个人认为如果需要把Docker当作软件生命周期管理工具的话,那用好Docker最为重要,API及命令的理解与使用是必需的。如果专注系统设计方面,那么除Docker以上的知识与经验之外,若有Docker源码的学习与理解,那么这些肯定会让你的Docker水平提高一个层次。

  5. 阅读推荐:Docker命令指令详情

总结起来学习Docker需要了解以下相关知识点:

  • Linux 系统管理(软件包管理,用户管理,进程管理等)

  • Linux 内核相关(Cgroup, namespace 等)

  • Linux 文件系统和存储相关(AUFS,BRFS,devicemapper 等)

  • Linux 网络(网桥,veth,iptables等)

  • Linux安全相关(Appmor,Selinux 等)

  • Linux进程管理(Supervisord,Systemd etc)

  • Linux容器技术(LXC等)

  • 开发语言(Python, GO,Shell 等)

Docker不是什么

Docker在解决问题上广度是其他工具无法比拟的,但是在深度方面Docker缺乏在某些特定类型上的深度。例如,一些组织发现当他们转移到Docker上时可以完全的移除配置管理工具,但是Docker真正厉害之处是它能代替某些方面的传统工具,它也可以兼容这些工具甚至结合以使其增强。接下俩我们介绍一些类型的工具,Docker不直接替换而是与其结合来获得更好的结果:

  • 企业虚拟平台(VMware、KVM等)
    按传统概念来看容器并不是虚拟机,虚拟机包含一个完整的操作系统运行在宿主机操作系统之上。最大的优点是可以轻松的在一个宿主机上跑很多的配有不同操作系统的虚拟机。结合容器,宿主机和容器共享相同的内核。这就意味着容器很少利用系统资源,但是一定要基于同一个底层的操作系统(例如都是Linux)。

  • 云平台(Openstack、CloudStack等)
    像企业虚拟化,容器工作流和云平台存在很多相似之处。两者在传统上都运行应用根据需求进行水平缩放。但是Docker并不是云平台,它仅仅是掌管配置,运行,和管理容器在原来存在的Docker主机上。它并不允许创建新的宿主系统(实例),对象存储,块存储,以及很多很云平台相联系的资源。

  • 配置管理(Puppet、Chef等)
    虽然Docker可以显著提高组织管理应用和应用依赖的能力,但是它并不能直接替代传统的配置管理。Dockerfiles用来定义一个容器在构建时的状态,但是并不能管理容器正在进行的状态,也不能用来管理Docker的主机系统。

  • 部署框架(Capistrano、Fabric等)
    Docker创建一个独立封装了应用所需的依赖的容器镜像,而且可以部署到任何环境中不需要做任何改变,使得Docker在部署发方面比较方便。然后Docker不能单独用作自动化部署复杂进程。其它的一些工具也是需要结合起来使得工作流自动化更加的健全。

  • 工作负载管理工具(Mesos、Fleet等)
    Docker服务器没有集群的内部概念。需要附加的编排工具来智能的协调Docker主机池工作,跟踪所有主机及其资源的当前状态,并保存当前容器运行情况清单。

  • 开发环境(Vagrant等)
    Vagrant是一个虚拟机管理工具,开发者可以用来模拟服务器栈,类似应用注定被部署的生产环境。另外Vagrant可以很容易的在Mac OS X和基于Windows的工作站上运行Linux软件。由于Docker服务器只能运行在Linux上,Docker提供了一个叫做Boot2Docker的工具,来允许开发者在不同的平台上快速的推行基于Linux的Docker机器,但是该工具并没有提供出Docker和Vagarant在广度方面的特性。

Docker有哪些主要的特性


/ 物理集装箱 Docker
无关内容 集装箱几乎支持所有类型的货物 能压缩任何负载和依赖
无关硬件 标准化的尺寸和交接使得集装箱可以通过货船火车货车运输,用起重机交接不需要换一个容器或者打开集装箱 使用操作系统的基本体(像LXC)能一致的跑在几乎任何硬件下,不需要对硬件做额外的修改
内容隔离和相互作用 不需要关心铁锹会砸坏香蕉。集装箱可以一起堆放一起运输 资源、网络和内容的独立避免了依赖问题
自动化 标准化使得自动化装载卸货和移动变得方便 使用标准的操作指令去跑start/stop/commit/search等等。对运营人员:CI、CD、自动化测试、hybrid clouds
高效 不需要打开不需要改动什么,高效的点对点的方式 轻量级,几乎没有启动的消耗,高效的移植性和操控性
职责分离 发货人只需要关心箱子内部的事情,托运人只需要关心箱子外部的东西 开发者只需要关心代码层面,运营人员只需要关心服务器的基础环境


作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
      首先,Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。 其次,Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。具体说来,Docker 在如下几个方面具有较大的优势。

一、快速交付应用程序

开发者使用一个标准的p_w_picpath来构建开发容器,开发完成之后,系统管理员就可以使用这个容器来部署代码,docker可以快速创建容器,快速迭代应用程序,并让整个过程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。docker容器很轻!很快!容器的启动时间是次秒级的,节约开发、测试、部署的时间

二、更高效的虚拟化

Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

三、更轻松的迁移和扩展

Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

四、快速部署也意味着更简单的管理

通常只需要小小的改变就可以替代以往巨型和大量的更新工作。

使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

五、对比传统虚拟机总结

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为 MB 一般为 GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个


   转载地址:http://www.dockerinfo.net/203.html

   

   

 知行办公,专业移动办公平台
【总监】十二春秋之,[email protected]
【Master】zelo,[email protected]
【运营】运维艄公[email protected]
【产品设计】流浪猫,[email protected]
【体验设计】兜兜,[email protected]
【iOS】淘码小工,[email protected];iMcG33K,[email protected]
【Android】人猿居士,[email protected];思路的顿悟,[email protected]
【java】首席工程师MR_W,[email protected]
【测试】土镜问道,[email protected]
【数据】喜乐多,[email protected]
【安全】保密,你懂的。