http://gengwg.blogspot.com/
如果在linux下面做开发就知道docker的妙处了。其实docker不光是有虚拟机的特性,
还加上了版本的概念,docker里面有两个重要概念,image和container。
image就是系统镜像,这个就好比git里面的一个master branch,这个branch你可以从
docker hub下载回来,也可以自己push一个上去,dock hub和git hub的概念类似。
拿到image之后,你可以基于这个image run出具体的container,这个container就是一
个isolated的running instance,可以理解为从branch fork出了一个新的branch并且
在上面工作。和git一样,针对一个image,你可以run无数个container,相当与一套配
置可以跑无数个实例,非常方便。
如果你对于某个实例做了自己的改动,想把这些改动持久化的话,可以commit到原有的
image,覆盖之前的版本,也可以commit到一个新的image,这样你就有了自己的image
,同时以前的image也还在。更妙的是,因为这些image是相互依赖的,所以保存下来的
image只是一个基于以前image的增量副本,节省了大量的空间,要知道image都是以百M
为单位来占用系统空间的。
具体到应用场景的话,比如你想对你现在的build跑一些测试,但又担心测试过程可能
会破坏现有的数据,或者你想保存每次测试的结果数据以供以后参考。在传统的流程里
面,你得用脚本去stage测试对象,测试完之后再把结果保存下来,重新stage新的测试
数据,难免会出现无法预期的问题。但是有docker的话就方便了。做好一个image之后
,用脚本启动测试,每次测试启动一个新的container实例,在里面跑完测试之后关闭
实例,启动新的实例跑下一个测试。这样以来所有的测试结果都会和真实情况一样保存
在自己独立的环境里面,是不是很方便?
--
如果在linux下面做开发就知道docker的妙处了。其实docker不光是有虚拟机的特性,
还加上了版本的概念,docker里面有两个重要概念,image和container。
image就是系统镜像,这个就好比git里面的一个master branch,这个branch你可以从
docker hub下载回来,也可以自己push一个上去,dock hub和git hub的概念类似。
拿到image之后,你可以基于这个image run出具体的container,这个container就是一
个isolated的running instance,可以理解为从branch fork出了一个新的branch并且
在上面工作。和git一样,针对一个image,你可以run无数个container,相当与一套配
置可以跑无数个实例,非常方便。
如果你对于某个实例做了自己的改动,想把这些改动持久化的话,可以commit到原有的
image,覆盖之前的版本,也可以commit到一个新的image,这样你就有了自己的image
,同时以前的image也还在。更妙的是,因为这些image是相互依赖的,所以保存下来的
image只是一个基于以前image的增量副本,节省了大量的空间,要知道image都是以百M
为单位来占用系统空间的。
具体到应用场景的话,比如你想对你现在的build跑一些测试,但又担心测试过程可能
会破坏现有的数据,或者你想保存每次测试的结果数据以供以后参考。在传统的流程里
面,你得用脚本去stage测试对象,测试完之后再把结果保存下来,重新stage新的测试
数据,难免会出现无法预期的问题。但是有docker的话就方便了。做好一个image之后
,用脚本启动测试,每次测试启动一个新的container实例,在里面跑完测试之后关闭
实例,启动新的实例跑下一个测试。这样以来所有的测试结果都会和真实情况一样保存
在自己独立的环境里面,是不是很方便?
--
Comments
Post a Comment
https://gengwg.blogspot.com/