最近技术总监叫我们有空去看了一下Docker的内容,学习一下,于是便在度娘上搜刮了一番,百度百科的解释是这样的:“Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。”
看完这句于是我开始有点懵了,这里面涉及到一些词汇,比如“容器引擎”、“依赖包”、“虚拟化”、“沙箱机制”。好吧开始阅读理解了- -!“容器引擎”可以理解成一个平台,可以把你的应用程序放进去进行管理(包括构建、发布、运行···),其实它的专业名词叫Application Container(应用容器,不就是个放app的东西嘛!!);“依赖包”也就是我们在开发项目的时候需要用到的支持(好吧!好吧!好吧!打个比方,你想要喝水,总得有个杯子吧?杯子就是支持!!);“沙箱机制”,至于这个词我放弃治疗了,我也不能统一它的解释,就这么地吧。
在明白它大概是个什么东西之后,接下来我们要知道这个东西的用处,其实就是为了保证线下的开发环境、测试环境和线上的生产环境一致(就是这么简单!!)。举个栗子:我们开发项目需要用到数据库,那么就得装一个MySQL吧?那么装MySQL的话可能要再装一堆依赖库,根据你的操作系统平台和版本进行设置,有时候还会从源代码编译报出一堆莫名其妙的错误(没错!就是这么*蛋),万一你机器挂了,所有的东西都要重新来,可能还要把配置在重新弄一遍(此处省略一万只草泥马)。但是有了容器,并且只要你能运行容器,MySQL的配置就全省了。而且一旦你想换台机器,直接把这个容器塞进另一个机器就好了。硬件,操作系统,运行环境什么的都不需要考虑了。
有了这个容器(Docker),那么只要我们的开发人员把项目放在上面进行开发,做完后整个容器直接丢给测试,测试过后把改动的地方改完接着直接上线(这里改动也是在容器中进行改动),那么这样就可以保证开发、测试和线上环境的一致了。
相对于VM(虚拟机)Docker 的优点:
1.启动速度快,容器通常在一秒内可以启动,而玩过 VM就不用我说了吧- -
2.资源利用率高,一台普通 PC 可以跑上千个容器,你跑上千个 VM 试试
3.性能开销小, VM 通常需要额外的 CPU 和内存来完成 OS 的功能,这一部分占据了额外的资源
到这里本文也就结束了,想了解Docker的设计图和原理就另外再找吧,这篇文章只是帮助快速认识Docker,有不对的地方请指出或私信我,感激不尽!