我的docker之旅(1):简介

1.什么是Docker

我的docker之旅(1):简介_第1张图片
    docker 是基于go语言实现的云开源项目,诞生于2013年初,最初发起者是dotCloud公司,dotCloud公司后来改名为 Docker Inc,专注于 docker 相关技术和产品的研发。现在主流的 Linux 操作系统都已经支持 dockek,Redhat RHEL 6.5/CentOs 6.5往上的操作系统、Ubuntu 14.04操作系统都已经默认带有 docker 软件包。
    docke r的主要目标是 “Build,Ship and Run Any App,Anywhere”,即通过对用组件的封装(Packaging)、分发(Distribution)、部署(Deployment)、运行(Runtime)等生命周期的管理,达到应用组件级别的 “一次封装,到处运行”。这里的应用组件,既可以是一个 Web 应用,也可以是一套数据库服务,甚至是一个操作系统或编译器。
    那么,docker 究竟是什么?docker 是一个基于LXC 的高级容器引擎。简单地说,docker 是一个轻量级的虚拟解决方案,或者说 —— 一个超轻量级的虚拟机。你一定理解虚拟机是什么,那么,你现在可以认为 docker 是一个秒级启动的虚拟机,可以轻易创建和删除,就这一点,是不是酷毙了。
    我们会经常看到这个 docker 的图,它告诉我们,docker 是一种集装箱式的工作方式。正如我们会将各种不同的货物统一打包成一个个集装箱,进行标准的管理和运输,在 docker 的世界里,我们把应用和应用所依赖的运行环境打包成一个个 image,然后分发到任意支持 docker 的平台,就可以在这些平台运行我们的应用,提供服务。
    那支持 docker 的平台有哪些?因为 docker 是基于 linux 的,在任意的 linux 发行版我们都可以原生地支持 docker,只要对应的内核版本大于 3.10 并且是 64bit,而在 Windows 和 Mac 中,我们可以通过 boot2docker 来运行 docker,这几乎意味着,所有的主流平台都支持 docker 的运行 —— 从此你不再需要为跨平台而苦恼。


2. VM与docker对比

我的docker之旅(1):简介_第2张图片


3.docker的运行环境及组成

我的docker之旅(1):简介_第3张图片


4.docker应用场景及能做什么

我的docker之旅(1):简介_第4张图片

     A. 应用场景
          1、 简化配置,统一配置,通过镜像快速启动(Simplifying)
(环境配置,构建一次就可以了,容器可以倒处使用,简化配置)
          2、代码流水线管理,开发环境->测试环境->预生产环境->灰度发布->正式发布,docker在这里实现了快速迁移(Code Oioeline Management)
          3、开发效率,对开发人员,有了镜像,直接启动容器即可(Developer Productivity)(提高开发效率,如新入职开发,第一天就要搞环境,如Php要windows 环境编译模块。如windows 下只有memcache 没有memcached
         4、应用隔离,相对于虚拟机的完全隔离会占用资源,docker会比较节约资源(App lsolation)
         5、服务器整合,一台服务器跑多个docker容器,提高服务器的利用率(Server Consolidation)
         6、调试能力,debug调试(Debugging Capabilties)
         7、多租户,一个租户多个用户,类似于阿里公有云的一个project下多个用户(Multi-tenancy),【可以给每个用户启动一个容器,如果硬件配置好的话】
         8、快速部署,不需要启动操作系统,实现秒级部署(Rapid Deplovment)
【一次构建可以说能倒处运行。只要装一个Dockerl软件,系统平台一样就可以(非必须)】

         面向产品
         面向开发
         面向测试(多版本并行测试)
         面向运维(开发,测试,运营环境一致,可以更快的自动化的扩容,春晚的微信红包就是用的Docker容器)
         面向自动化扩容(shipyard等开源软件可以实现)
         面向微服务(每一个小的服务都可以做集群,如网购下单量太大,负载跟不上,较慢,那我们就可以启动20个容器专用于下单)
         面向大规模的分布式架构(如微信红包) 多个环境的应用场景。

     B. 对于开发而言能做啥
         1.共享基础容器
         2.共享卷开发容器
         3.开发工具容器
         4.不同环境下测试容器
         5.构建容器
         6.安装容器
         7.盒子中默认服务容器
         8.基础设施/粘合剂容器

     C. docker在生产中应用现状
         1.容器不同于虚拟机
         2.容器不如虚拟机来得成熟
         3.容器可以在几分之一秒内启动
         4.容器已在大规模环境证明了自身的价值
         5.IT人员称容器为轻量级
         6.容器引发了安全问题
         7.Docker已成为容器的代名词,但它不是唯一的提供者
         8.容器能节省IT人力,加快更新
         9.容器仍面临一些没有解决的问题

    D. 以下两图片仅供参考了解
        资源浪费降低,相对于虚拟机
我的docker之旅(1):简介_第5张图片


5.不建议使用docker情况,及使用docker不建议使用的服务
  1. docker可以提高资源利用率,但是如果服务器资源利用率已经很高了,服务器压力特别大,还搞docker就没有必要。
  2. docker可管理性比较弱,比如为什么容器坏了,很难查,所以官方也不建议开启SSH管理,开了,如是线上环境,安全是也是个大问题 。
  3. 数据库不建议使用Docker,因为可能存在未知道BUG,虽然容器坏了,可以重建一个容器,但是如果真出现未知的bug,就比较非催了,毕竟数据是公司的命脉。

你可能感兴趣的:(Docker,操作系统,开源项目,dotcloud)