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是什么,有哪些特性,能够给我门带来什么。