初识docker
声明:本系列文章仅记录docker学习历程,不免有错误或技术out之处,欢迎指正及拍砖。本小白虚心接纳。
引言
2014年10月份,随着公司产品战略的转移,有幸第一次接触docker,当时连虚拟机都不是很了解的我,从入门慢慢的学习docker。研究了大半年的时间,结果随着公司内部cloudfoundry的流产,也就渐渐的遗忘掉,遗憾的是当时没有整理文章。2016年,产品要微服务化,随之docker又进入了视线,而这时的docker非彼时,版本更新之快,架构也有所变化,不得不重新开始,索性,这次就整理下docker学习之路。
我们大部分人都知道VM虚拟机,我们就从整机虚拟机窥探,进而去认识docker。百度百科:虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。VM的核心是具备物理机的所有功能,且与物理操作系统完全隔离。vm流行,是因为给好多企业节省资源,资源高利用率。然而,会不会考虑,有些软件,可以共享内存,或是文件系统等等。使用VM就显得资源浪费。
官方vm与docker比较图从上图中可以看出,docker与vm的主要差别就在于docker提供了docker engine共享kernel。这样就极大的节省资源,且更加小巧。
docker可以解决虚拟机能解决的问题,也可以解决虚拟机耗资源的问题。docker具有良好的隔离性(进程级别),可扩展性,秒级应用启动,自动化测试中容器的易管理性(随建随删),当然docker也有些不能解决的问题,譬如应用之间的网络,应用的托管等,kubernetes的出现,很好的托管docker contanier,关于k8s,我们后续再讨论,总之,一个新的产品,总会是解决旧有热度产品的痛点问题。
何为docker呢?
docker的思想源自集装箱,屏蔽I层差异化,将各式各样的集装箱放在操作系统的大船上运送。docker可以简单理解为小型虚拟机,却在整机虚拟机之上。docker的container即为各个应用使用的容器。
docker logo上图中docker的logo已经很形象的说明,docker类似一个集装箱,是每个应用的载体,且可以复用。docker是基于容器技术的轻量级虚拟化解决方案,docker最核心的是dockerengine,将linux的cggroup和namespace等底层技术进行了再封装,docker屏蔽掉底层操作系统,目前docker支持各大主流操作系统。为用户提供了便携的操作,包括命令行和API。
docker enginecontainer:容器 image:镜像
network:网络 data volumes:数据卷