Docker--------循序渐进学Docker笔记

 
名称 使用场景 缺点
Puppet:集中的配置管理系统 需要大批量部署相同服务的应用场景  
OpenStack:开源的云计算管理平台项目 帮助企业内部实现类似于AmazonEC2的云基础架构服务。优点:灵活。适用于中大型企业 组建繁多,构建复杂,
     

1.1 初步认识了解Docker

  • Docker:是一个开源应用容器。
  • Docker:集版本控制、克隆继承、环境隔离等特性于一身,提出一整套软件构件、部署和维护等解决方案。简单、高效、直观。
  • 解释:Docker使用容器引擎解决平台依赖关系,它在每台宿主机上都启动一个Docker的守护进程,守护进程屏蔽了与具体平台相关的信息,对上层应用提供统一的接口。这样Docker化的应用,就可以在多个平台上运行,Docker或针对不同的平台解析给不同平台下的执行驱动、存储驱动和网络驱动去执行。
  • 认识比较 - 同Java: Java提出“Write Once,Run Anywhere”。Docker提出“Buid once,Run anuwhere,Configure once,Run anything”。
  • 认识比较 - 同Android:Docker:是一个开源容器引擎,它有自己的生态圈,它的应用以镜像(image)的形式发布,可以运行在任何装有Docker引擎的操作系统上。它有一个官方的镜像仓库,提供各种各样的应用,当需要某个应用时,就从官方的仓库搜索并下载,个人开发者也可以提交镜像到官方仓库,分享给别人使用。Docker也允许使用第三方的镜像仓库。
  • 认识比较- 同Github:使用Docker后,软件部署的应用也可以具备类似Github的版本控制功能,对应用的一些修改,提交新版本,运行环境可以在多个版本之间快速切换,自由选择使用哪个版本对外提供服务。
  • 总结:Docker把应用打包成一个镜像,镜像带有版本控制功能,应用的每次修改迭代就对应镜像的一个版本,制作好的镜像可以发布到镜像仓库分享给别人;也可以直接从镜像仓库下载别人制作好的应用,不做任何修改即可运行起来。

1.2 Docker的结构

  • Docker当作独立的软件来看:用Golang写的开源程序,C/S架构,包含Docker Server和Docker Client。源码:https://github.com/docker/docker
  • Docker看作一个生态:两部分构成:Docker仓库和Docker自身程序。(仓库类似iPhone的Appstore,Docker类似iPhone的iOS操作系统)

  1.2.1 Docker仓库

    地址:https://hub.docker.com

 

  1.2.1 Docker自身程序

    Docker本身是一个单机版的程序,运行在linux操作系统上,属于用户态程序,通过一些接口和内核交互。

    Docker  Daemo作为Server端,在宿主机上以后台守护进程的形式运行。

    Docker Client:既可在本机上以bin命令的形式发送指令,也可以在远端通过RESTful API的形式发送指令;

    Docker的Server端接收指令并把指令分解为一系列任务去执行。

 

  1.2.2 Docker的工作流程

    1.)Docker Client 向Daemon发送启动xxx指令。

    2.) Docker Daemon 就发送给Docker的官方仓库,在仓库中搜索 xxx

    3.)如果找到xxx这个应用,就把它下载到我们的服务器上。

    4.) Docker Daemon 启动xxx这个应用。

    5.)把启动xxx应用示范成功的结果返回Docker Clinet。

 

  1.2.3 Docker化应用的存在形式

    分层,共享层,写时拷贝。

    镜像:以分层的、可以背LXC/libcontainer理解的文件存储格式。

    容器:把应用镜像从Docker仓库下载到本地机器上,以镜像为模板,在一个容器类虚拟机中把这个应用启动,这个虚拟机叫做容器。

 

  1.2.4 Docker对变更的管理

    应用文件变更:新增一层记录全部的修改动作信息。

    提交应用到Docker仓库:已有的版本不上传,只需把新增的记录修改动作层提交即可。

    下载心版本应用:如果已有旧版本,只需要从仓库下载变更层即可。

    总结:Docker不仅具有版本控制功能,并且还能够利用分层特性做到增量更新。

 

1.3 选择Docker的原因  

  软件部署的主流解决方案:

  环境:基础环境、应用环境。

 

    基础环境:包含机器硬件、操作系统、提供基础服务的应用(eg:ssh、syslog等)

    应用环境:包含应用所需的软件包和配置文件

     策略:

    基础环境灵活,对硬件和操作系统没有限制,只需在每台机器安装Docker Engine,用于运行Docker应用

    应用环境作为一个有机整体(包括:应用需要的所有软件包、配置文件、依赖的运行环境(操作系统和依赖库)),带有版本控制功能,也可以提到仓库共享。

   ps:生产环境的机器上可以同时缓存应用的多个版本镜像,如果发布有问题,可快速切换到以前版本。

  优势:

    于开发人员:

  •     Docker化的应用使用容器虚拟化技术,每个应用都运行在独立的虚拟化环境中,天然具有隔断性,不用担心一机多用造成的管理混乱。
  •     开发人员在多任务开发时,可以并行启动这些应用的Docker容器,每一个Docker应用有一个独立的运行环境,互不干扰。
  •     开发机硬件故障,在新开发机上,重新从Docker仓库下拉开发环境的镜像,一两分钟就可以重新搭建一套开发环境,并且即便新旧开发机的硬件和操作系统不一致,重新搭建的开发环境仍能保持和原来的环境一模一样。另外,还可以通过Docker仓库,把重要变更及时备份到远端。
  •     Docker的每个复杂软件都可以制成Docker镜像分享给大家。

    于测试人员:

  •       测试时,无需做任何配置,就能保证开发和测试环境完全一致,测试人员只需要关注测试本身就可以了。

    于运维人员:

  •       服务具备快速部署能力,阔缩容、版本回退在几秒钟内就可以完成。
  •       基于同一个Docker镜像部署服务,可以保证每台机器应用完全一致。
  •       由于Docker化应用是虚拟化,多个应用可以混合部署在一台机器上,互不干扰,可以提高机器使用率。
  •       Docker化应用是虚拟化,多个应用可以混合部署在一台机器上,互不干扰,可以提高机器使用率。
  •       通过Dockerfiel管理Docker镜像,即使系统多次易手、交接文档不全,运维人员也可以快速了解系统是如何搭建的。
  •       “Build once,Run anywhere”,只需制作一次Docker镜像,在任何环境下都可以运行;还可以基于这个镜像做修改,制作新的镜像。

 

    

posted @ 2018-07-09 07:05  chocolateXLL  阅读(130)  评论(0编辑  收藏  举报