docker是什么

docker是DotCloud公司开源的一款产品。
docker是一个开源的应用容器引擎。

docker工作流程

启动app1:

  • Docker Client向Daemon发送启动app1指令。
  • Linux服务器装有Docker软件,没有app1相关软件或服务,Docker Daemon就发送请求给Docker的官方仓库,在仓库中搜索app1。
  • 如果找到app1这个应用,就把它下载到我们的服务器上。
  • Docker Daemon启动app1这个应用。
  • 把启动app1应用是否成功返回给Docker Client。

docker对变更的管理

版本迭代,版本回退是常态,docker通过分层变更来实现。
假如一个应用的docker镜像,它的v1.0版本有三层,每层文件的大小如图:

第三层50M

第二层 200M

第一层 1G

  • 修改位于第一层的文件A
  • 删除位于第二层的文件B
  • 添加一个新文件C
    Docker会薪增加一个第四层,针对上边的修改需求处理:
  • 把第一层的文件A拷贝到第四层,修改文件A的内容
  • 在第四层,把名称为B的文件设置为不存在。
  • 在第四层创建一个新文件C

第四层3M A B- C+

第三层50M

第二层 200M

第一层 1G

如果把应用的版本发布到docker仓库,供其他宿主机使用。docker的仓库已经存在这个应用镜像的前一个版本,也就是存储在第一层、第二层、第三层,上传新版本不需要重复上传前三层,只需传输第四层到docker仓库即可。

docker能给我们解决什么问题

1、对开发人员

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

2、对测试人员

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

3、 对运维人员

  • 服务具备快速部署能力,扩缩容、版本回退在几秒内可以完成
  • 基于同一个docker镜像部署服务,保证每台机器应用完全一致
  • 由于docker化应用是虚拟化,多个应用可以混合部署在一台机器上,互不干扰,提高机器使用率
  • docker化应用可以运行在不同的硬件和操作系统平台下,在不同的环境自由迁移
  • 通过dockerfile管理docker镜像,即使系统多么棘手、交接文档不全,运维人员也可以快速了解系统如何搭建的
  • docker倡导“build one, run anywhere”,繁琐的活做一次制作成为docker镜像,在任何环境下都可以运行。
  • 总之可以让运维工作变得简单和易于维护。

总结

通过学习知道了docker是什么,有哪些特性,能够给我门带来什么。