由百折不挠的信念所支持的人的意志,比那些似乎是无敌的物质力量具有更大的威力。——爱因斯坦
插画来自网络
什么是Docker?
Docker 使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及AUFS类的Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。
由于隔离的进程独立于宿主和其他的隔离的进程,因此也称其为容器。docker百度百科
Docker能做什么?
作为一个测试,我们常常面临的问题:
- 测试环境与开发环境不一致,工单提交后,开发人员经常对我们说:“我这边是正常的!”
- 测试环境的搭建可能因为JDK的版本不同而失败等等问题
那么Docker就可以帮我们解决这一系列问题
Docker和虚拟机的区别
docker和虚拟机最大的区别就是:不同的虚拟化方案
为什么要这么说呢,我们来看下这张图就知道了!
搞错了,重来!
从上图可以看出来,左面的虚拟机是虚拟化了一整个操作系统(Hyper Vistor 虚拟机服务),而右边的docker并没有虚拟化操作系统,而是直接使用宿主机的内核,通过Docker Engine来管理所有的容器和镜像。
为什么要学习Docker
如果Docker相对于虚拟机来说没有那么大的优势,我们为什么要花时间来重新学习一个工具呢?
Docker作为一个新的技术,肯定是有非常多的优点,那么我们来看看相对于VM,docker的特点。
所以,总结了以下几点:
- docker相对于虚拟机启动时间快
- 硬盘占用空间小
- 性能接近原生,因为时直接使用宿主机内核
- 单机支持上千个容器,而虚拟机一般支持在几十个左右。
Docker的缺点
docker的缺点就是docker公司如何赚钱?
docker有个缺点就是挑内核,正因为docker不虚拟内核,而是直接使用宿主机的内核,所以这既是他的优点,也是缺点。
不能用docker做兼容性测试:之前有个人说:我在docker上安装多个版本的centos系统,然后把我的APP放在不同的系统中跑,是不是可以完成兼容性测试呢?
心目中的理想原型:
但是要知道docker是直接使用宿主机的内核,也就是说,这2个APP所在的系统都是Ubantu4.1.0,也就达不到兼容测试。
所以,如果需要做兼容性测试的话,还是使用虚拟机。
结束
如果本篇博客有任何错误,请批评指教,不胜感激 !