快速学习Docker-初识Docker

Docker是什么:

Docker是一个用来装应用的容器,就好比杯子用来装水,笔筒用来装笔,书包用来装书一样,你可以把hello world放到Docker里,你可以把网站放到Docker里,你可以把你想的到的任何程序放到Docker里。

Docker的思想:

Docker 的思想来源于集装箱,集装箱最大的作用在于能够将货品标准化,在运输的过程中,不需要直接装载和卸载各种各样的商品,而是统一标准的集装箱,这样装载和卸载的环节就可以实现流水线和自动化了,并且商品封装在集装箱中,没有暴露在外面,提高安全性,集装箱与集装箱之间也是互相隔离,不会有任何相互影响的问题。我们也不再需要专门的船去运输专门的货品,只要货品在集装箱内好好封存着,那就可以使用一艘大船将他们都运走。并且你可以很方便的将集装箱装载到飞机、轮船、货车、火车,大大的提高了运输的便利性。
对于我们来说,Docker 也担任了集装箱类似的角色,我们的应用或者所依赖的第三方服务可以理解为货品,而 Docker 则是将我们的货品规范化管理起来,从而可以轻易的完成产品交付,环境转移等等诸多问题。还有我们的货品由Docker这个集中箱封装,对外隔离,提高安全性。并且 Docker 对于主机资源的消耗非常小,可以实现对服务器资源的最大利用。

Docker 解决了哪些问题?
  1. 组织有序性
    以传统的方式部署你的应用,可能出现由于多个应用程序的依赖不用,导致应用之间的依赖变得非常混乱,若此时出现两个应用依赖同一个程序但却依赖不同版本,便会出现让人比较头痛的问题,使用Docker便可以很方便的帮我们管理各个应用的依赖,并以容器为基础将应用的运行环境独立开来,从而不会互相影响,还能提高资源利用率。

  2. 便携性
    另一问题是,以传统的方式部署你的应用,如果我们的应用如果后期需要迁移(这里的迁移包括相同操作系统和不同操作系统的迁移),还是需要做大规模的集群,都是一件工作量非常大的操作。而容器化了的应用,对这些操作都是非常方便的。

  3. 安全性
    最后一个不得不提的问题就是安全,以传统的方式部署你的应用,如果该应用被攻击者攻击,或者因为程序自身的bug,又或是运行环境多个应用间混乱的依赖关系导致的问题,这样的话,你的服务器系统安全危险级别会很高,因为这些问题将直接影响你的系统安全。但如果你的应用是运行在Docker容器中,那么一切的危害都会被隔离在容器内,因为容器的资源跟系统是隔离的,危害将被降到最低。

Docker VS VM

Docker 的核心是 基于 LXC(Liunx container) 技术的实现,可以理解为一个轻量级的虚拟机(实际上是容器的概念,Docker 不是虚拟机),Docker 使用 Linux 的 namespace 和 cgroups 技术实现容器隔离与资源限制。

快速学习Docker-初识Docker_第1张图片

类别 Docker VM
操作系统 与宿主机共享OS 在宿主机 OS 运行虚拟机 OS
部署难度 非常简单 组件多, 部署复杂
启动速度 秒级 分钟级
执行性能 和物理系统几乎一致 VM 会占用一些资源
镜像体积 镜像是 MB 级别 虚拟机镜像是 GB 级别
管理效率 管理简单 组件相互依赖, 管理复杂
隔离性 比较弱 彻底
Docker 的应用场景
  • 面向产品:产品的交付模式改变

  • 面向开发:个人开发环境发生改变

  • 面向运维:

    • 获得比虚拟机性能损失更小的解决方案
    • 可以更快的进行自动化扩容(VM 是分钟级扩容,Docker 是秒级)
    • Docker 适用于微服务架构
  • 面向测试:

    • 同一环境下多版本测试
  • 自动化、微服务、大规模集群(微博红包案例)百度的 Paas 平台、等等…

  • 应用场景扩展:http://www.docker.org.cn/docker/151.html

  • docker中文学习网:http://www.docker.org.cn

你可能感兴趣的:(快速学习,初识Docker,快速学习Docker)