起源
软件部署的时候,我们需要打包发布到 开发环境 测试环境 生产环境。
但是我开发环境,测试环境用的是windows 。 集成测试环境, 生产环境用的linux。
由于环境的不同可能会导致意想不到的问题,明明在环境A测试通过,在环境B测试失败。于是又要加班定位,而这种系统级别的定位往往是最费时间和脑子的,而聪明的程序员就想到,我直接备份我的操作系统,然后你那边直接还原我的操作系统就好了。
备份操作系统文件太大,操作系统的硬件也可能不一样,那么怎么办?
虚拟机呗!!!
虚拟机还不够快,不够小,不够方便,docker应运而生!!
概念
docker最重要的两个概念,是容器,和镜像
其实根据我的docker起源说,聪明的小伙伴肯定能类比到上述的虚拟机和虚拟机用到的镜像文件,对的,咱就这么理解就好了
容器==虚拟机 镜像==虚拟机启动用到的镜像
要想我们发布的软件跑起来,怎么做?
运行一个容器,容器里面装个镜像就可以了!!! so easy
Git神模仿
做过开发的应该都用过git去管理源代码,docker将git的思想用在镜像上。
假如有个容器运行着linux的基础镜像,你在此容器中上安装了nodejs,然后我们就可以commit一下这个容器,容器的状态就会被保存成生成一个新的镜像了.
很多docker命令都能做到类似git commit 的这种命令,然后返回一个hash值来标识新的镜像,我们就可以根据这些hash标记,在容器内时光倒流,docker也支持git打标签的方式给容器或者镜像取个别名,方便查找,hash谁记得住