Dockerfile详解
【回首往事、写给曾经的自己】
docker是一个好东西、但是官方文档的组织方式不太合理,它在介绍完成docker的基本概念之后,直接就操了一段dockerfile。在我当时还
是一个初学者的时候,dockerfile成为了学习路上最大的障碍。
现想回想起来一个主要的问题是,dockerfile太突然了! 没有“起承转合”上来就直接“刚”。好在我比较的“坚韧不拔,不抛弃不放弃”最终
还是get到了dockerfile的哲学
【从虚拟机到docker】
在实现的软件开发上线过程中,常常会遇到这样的事,测试同学在开发环境上测试的的时候,软件的功能是正常的;但是它在测试环境上对软件
的功能进行测试的时候发现软件直接报错了,或是功能不对,最后以整个公司之力去排查问题,结果发现只是用了一个比较老的jar包;两样的问题
可能在生产环境上还要再发生一次。次数多了之后开发同学开始变得不自信了,你问他这个版本的程序在客户的主机上能正常运行吗?他会说不太
确定,这个要看情况 。
我见过的比较大胆的做法,软件公司把自己的软件安装在虚拟机上,在测试通过后,他们发布的不是软件,而是是整个虚拟机。VMware真是的爱死
他们了。用户那里只要安装有对应版本的VMware就行了,他们通过发布VMware镜像的方式发行自己的软件,虽然看上去有点豆,
不可否认是解决了他们的问题。
上面的做法太笨重了,每次发布一个windows-server-2008 + .net framework + 软件 好几十个G呀!然而这几十个G中大多数的内容对于目标
软件来说是无用的
docker 做了什么呢?事实上docker的做法和上面的发布vmware的镜像的做法差不多,只不过docker的做法减少了大量的无用内容的发布,这
这docker发布的镜像在体积上就要小上不少。
docker一直在强调它能做到“开发环境”与“生产环境”的完全一致,
---