什么是容器,什么是Docker?
什么是容器?什么是Docker?
  容器是⼀种轻量级、可移植、⾃包含的软件打包技术,使应⽤程序可以在⼏乎任何地⽅以相同的⽅式运⾏。开发⼈员在⾃⼰笔记本上创建并测试好的容器,⽆需任何修改就能够在⽣产系统的虚拟机、物理服务器或公有云主机上运⾏。Docker是容器的⼀种,还有其他容器,⽐如 CoreOS 的 rkt。
容器与虚拟机
容器由两部分组成:
1. 应⽤程序本⾝docker进入容器
2. 依赖:⽐如应⽤程序需要的库或其他软件
  容器在 Host 操作系统的⽤户空间中运⾏,与操作系统的其他进程隔离。这⼀点显著区别于的虚拟机。
  传统的虚拟化技术,⽐如 VMWare, KVM, Xen,⽬标是创建完整的虚拟机。为了运⾏应⽤,除了部署应⽤本⾝及其依赖(通常⼏⼗MB),还得安装整个操作系统(⼏⼗ GB)。
下图展⽰两者区别:
  由于所有的容器共享同⼀个 Host OS,这使得容器在体积上要⽐虚拟机⼩很多。另外,启动容器不需要启动整个操作系统,所以容器部署和启动速度更快,开销更⼩,也更容易迁移。
为什么需要容器?
  简要的答案是:容器使软件具备了超强的可移植能⼒。
  今天开发⼈员通常使⽤多种服务(⽐如 MQ,Cache,DB)构建和组装应⽤,⽽且应⽤很可能会部署到不同的环境,⽐如虚拟服务器,私有云和公有云。
  ⼀⽅⾯应⽤包含多种服务,这些服务有⾃⼰所依赖的库和软件包;另⼀⽅⾯存在多种部署环境,服务在运⾏时可能需要动态迁移到不同的环境中。这就产⽣了⼀个问题:
  如何让每种服务能够在所有的部署环境中顺利运⾏?
  于是我们得到了下⾯这个矩阵:
  各种服务和环境通过排列组合产⽣了⼀个⼤矩阵。开发⼈员在编写代码时需要考虑不同的运⾏环境,运维⼈员则需要为不同的服务和平台配置环境。对他们双⽅来说,这都是⼀项困难⽽艰巨的任务。
  如何解决这个问题呢?
  聪明的技术⼈员从传统的运输⾏业到了答案。
  ⼏⼗年前,运输业⾯临着类似的问题。
  每⼀次运输,货主与承运⽅都会担⼼因货物类型的不同⽽导致损失,⽐如⼏个铁桶错误地压在了⼀堆⾹蕉上。另⼀⽅⾯,运输过程中需要使⽤不同的交通⼯具也让整个过程痛苦不堪:货物先装上车运到码头,卸货,然后装上船,到岸后⼜卸下船,再装上⽕车,到达⽬的地,最后卸货。⼀半以上的时间花费在装、卸货上,⽽且搬上搬下还容易损坏货物。
  这同样也是⼀个 NxM 的矩阵。
  幸运的是,集装箱的发明解决这个难题。
  任何货物,⽆论钢琴还是保时捷,都被放到各⾃的集装箱中。集装箱在整个运输过程中都是密封的,只有到达最终⽬的地才被打开。标准集装箱可以被⾼效地装卸、重叠和长途运输。现代化的起重机可以⾃动在卡车、轮船和⽕车之间移动集装箱。集装箱被誉为运输业与世界贸易最重要的发明。
  Docker 将集装箱思想运⽤到软件打包上,为代码提供了⼀个基于容器的标准化运输系统。Docker 可
以将任何应⽤及其依赖打包成⼀个轻量级、可移植、⾃包含的容器。容器可以运⾏在⼏乎所有的操作系统上。
  其实,“集装箱” 和 “容器” 对应的英⽂单词都是 “Container”。
“容器” 是国内约定俗成的叫法,可能是因为容器⽐集装箱更抽象,更适合软件领域的原故吧。
  我个⼈认为:在⽼外的思维中,“Container” 只⽤到了集装箱这⼀个意思,Docker 的 Logo 不就是⼀堆集装箱吗?
Docker的特性
特性集装箱Docker
打包对象⼏乎任何货物任何软件及其依赖
硬件依赖标准形状和接⼝允许集装箱被装卸到各种交通⼯具,整个运输
过程⽆需打开
容器⽆需修改便可运⾏在⼏乎所有的平台上 -- 虚拟机、物理机、公
有云、私有云
隔离性集装箱可以重叠起来⼀起运输,⾹蕉再也不会被铁桶压烂了资源、⽹络、库都是隔离的,不会出现依赖问题
⾃动化标准接⼝使集装箱很容易⾃动装卸和移动提供 run, start, stop 等标准化操作,⾮常适合⾃动化⾼效性⽆需开箱,可在各种交通⼯具间快速搬运轻量级,能够快速启动和迁移
职责分⼯货主只需考虑把什么放到集装箱⾥;承运⽅只需关⼼怎样运输
集装箱
开发⼈员只需考虑怎么写代码;运维⼈员只需关⼼如何配置基础环
特性集装箱Docker
容器的优势
  对于开发⼈员 - Build Once, Run Anywhere
  容器意味着环境隔离和可重复性。开发⼈员只需为应⽤创建⼀次运⾏环境,然后打包成容器便可在其他机器上运⾏。另外,容器环境与所在的 Host 环境是隔离的,就像虚拟机⼀样,但更快更简单。
  对于运维⼈员 - Configure Once, Run Anything
  只需要配置好标准的 runtime 环境,服务器就可以运⾏任何容器。这使得运维⼈员的⼯作变得更⾼效,⼀致和可重复。容器消除了开发、测试、⽣产环境的不⼀致性。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。