docker简介:
我们简单的举个例子:很古老的托运方式,是将大大小小品种不一的货物压在一起放在一艘大船上统一托运,这会造成什么后果?显然钢材和香蕉放在一起会压坏香蕉,当大船到岸海运改为汽运,那一大堆的装卸又何尝不是一种折磨。这个时候Docker就出现了,它做到能既能够组合当前的最佳服务又能跨越多种运行环境带来的困扰,它就好像集装箱的概念一样,方便的打包应用,隔离他们之间的影响(显然虚拟机在这方面做的更出色),且能在各种环境和平台之间移植(一次配置,处处运行,想想是不是很嗨?)。
程序员是倡导站在巨人的肩膀上看世界的,既然如此,开发者都希望自己能专注自己的业务,而不是被环境各种乱七八糟的事影响,这大概是我能想到Docker最吸引人的地方。
如何还不理解我们抽象的形容一下(你再不理解我打你了哦):运行环境是海运空运汽运,操作系统是大船飞机火车,各种服务譬如静态网站,用户数据库,队列需要处理的货物。而上图的那个不起眼的箱子则是我们今天的主人公。Docker容器就是各种如上图所见的集装箱,这种集装箱上的了天,下的了地,入的了海,而且各种应用还具有不错的隔离性。现在你懂了嘛?
Neal同学昨天对容器的概率产生的疑问,下面将是最通俗易懂的讲解,请搬好小板凳静静的看着我装逼:Docker是容器的一种,而容器又是一种轻量级的虚拟机。那虚拟机大家都玩过吧?就是一整套的物理主机(CPU,内存,硬盘,驱动)等等等等,确实一台电脑可以安装多个虚拟机,但是你不闲卡嘛?不闲慢嘛?不闲占空间嘛?OK,我们的容器应运而生了。首先要了解的是容器是运行在操作系统之上的,容器引擎提供的是进程级别的隔离(而虚拟机是一整套完整的操作系统),容器和容器之间前期的资源是有部分共享的,因为他们都共用一个系统内核甚至是公共库
Docker的应用场景总结:
- 加速本地开发。通过Docker能够快速搭建好开发和运行环境,并且该环境可以直接传递给测试和产品部署
- 自动打包盒部署应用
- 创建轻量、私有的PaaS环境
- 自动化测试和持续集成、部署
- 部署并拓展Web应用,数据库和后端服务器
- 创建安全沙盒
- 轻量级的桌面虚拟化
Docker的组件和运行流程
我们用最简洁的语言来描述Docker的三大组件
1. 镜像:一个静态模板。就是保存容器的环境和执行的代码。理解成容器的代码总没错。运行镜像之后就成了容器
2. 镜像的运行之后的状态。
3. 库:储存镜像的目录
部署流程
- 构建一个容器A(可以手工搭建也可以通过Dockerfile自动构建)
- 将容器A保存为镜像A(镜像是容器的静态形式,前面已有简单的描述)
- 推送镜像A到Docker库里进行共享
- 本地搜索并拉取Docker库里的镜像
- 运行镜像A,即实现了在本地部署容器A
之后我们可以猜想:是否之后的各种GQC类的环境测试简单的用Docker就可以实现呢?当然还有一系列的功能应用有待开发….