docker简介
一.出现的原因及解决思路
1.1 配置问题
- 自己的开发环境具有特定的配置,而其他开发人员也各有其特定的配置,又由于自己开发的应用依赖于自己原有的特定配置,故如果原封不动将此应用发给其他开发人员,就会由于配置不同而导致诸多问题,从而需要费时费力去解决,明显带来不必要的效率问题。
1.2 解决思路
- 安装的时候,将原始环境完全复制过来
1.3 实际解决方法–Docker
- 传统上,开发团队会将完成的代码程序和相应的配置、部署文件提交给运维团队,但仍然出现部署失败的情况。docker通过镜像将作业系统核心除外,运行应用所需的环境,自底向上进行打包,实现应用跨平台无缝接轨运作。
二.一次镜像,处处运行
- 类比对象一:多个人在自己的电脑(不论windows,ios)都安装vmware虚拟机,并在其上运行同样的centos.iso镜像文件,就能够保证环境迁移的一致性,也就是呈现相同的运行效果
- 类比对象二:将某项目的源码,运行环境,配置文件等打包成一个镜像文件,多个人在自己的电脑(不论windows,ios)都安装docker,只需在docker上运行这一份镜像文件,也能保证环境迁移的一致性,呈现相同的运行效果
三.容器与虚拟机对比
3.1 容器发展简史
3.2 传统虚拟机技术
3.2.1 结构图
3.2.2 缺点
- 原因:由于iso镜像文件包含了整套操作系统的硬件和软件,虽然完整迁移了环境,但也造成迁移过多,有些不必要的软硬件会占用空间
- 缺点总结:1.资源占用多;2.冗余步骤多;3.启动慢
3.3 容器虚拟化技术
3.3.1 结构图
3.3.2 特点分析
- linux容器虚拟化技术,即linux容器。它是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包括应用所需的全部依赖项,因而从开发到测试的整个过程,都具有可移植性和一致性。
- 重点:不是模拟一个完整的操作系统而是隔离进程。与虚拟机不同,不需要捆绑整个操作系统。
3.4 对比总结
- 轻便性对比:传统虚拟机需要运行完整的操作系统,而容器内的应用直接运行于宿主的内核,容器内没有自己的内核且没有进行硬件虚拟。
- 容器化特点:容器之间相互隔离,各有自己的文件系统,各自对应进程互不影响。