为什么会是 Docker?
最近Docker容器化部署特别火热,那为什么说Docker是下一代的容器工具?回答这个问题之前,我们就服务器的历史演变来简单说明一下。
1、物理机时代
物理服务器又名独立服务器,顾名思义,就是一个躺在机房的实实在在的物理服务器。简单描述就是一个物理机上先安装操作系统,然后直接安装运行我们的应用软件。
这样的缺点很明显:
部署慢
逐个机器安装系统,部署应用
成本高
物理机部署应用
资源浪费
硬件资源没有合理利用
后期迁移、扩展成本高
每次迁移都要重新安装一模一样的运行环境
2、虚拟机时代
一个物理机上虚拟化出来多个虚拟机,每个虚拟机上进行安装操作系统,然后在虚拟机上直接安装运行我们的应用软件。例如阿里云、腾讯云等云服务器都属于虚拟机。
这样的优势是:
多部署
每台物理机可部署多台虚拟机
资源隔离
每个虚拟机都由独立分配的内存磁盘等硬件资源,通过Hypervisor分配。
易扩展
随时随地都能在一个物理机上开出新的虚拟机
成本较低
缺点:
VM需安装操作系统
3、容器化
虚拟化是物理硬件的隔离,容器化是app层面的隔离。容器化是基于虚拟机基础上做的资源隔离。Docker 容器和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的。
Docker:容器化技术的一种具体实现。
这样的特点是:
更高效的利用系统资源
更快速的启动时间
启动、停止可控制在秒级别
一致的运行环境
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现这类问题。
持续交付和部署
更轻松的迁移、维护和扩展
通过Dockerfile配置文件来支持灵活的自动化创建和部署机制,提高效率。
什么是Docker?
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的linux服务器,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类iphone的app),并且容器开销极其低。
Docker 包括三个基本概念:
镜像(Images):Docker 容器运行时的只读模板,每一个镜像由一系列的层 (layers) 组成。
容器(Containers):和文件夹很类似,一个Docker容器包含了所有的某个应用运行所需要的环境。
仓库(Repositories):用来保存镜像,可以理解为代码控制中的代码仓库。
Docker Daemon 是Docker的守护进程,Docker Client通过命令行与其通信,完成Docker的相关操作。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器;
Docker 容器通过 Docker 镜像来创建;
容器与镜像的关系类似于面向对象编程中的对象与类。
Docker Hello World
我们使用Docker来测试一下HelloWorld(由于安装过程不同系统存在差异,自行baidu即可~)。
step1:通过输入docker pull hello-world来拉取镜像
step2:从仓库拉取到了HelloWorld的镜像
step3:我们来运行一下,通过docker run hello-world
如出现上图的内容,则说明hello-world测试运行成功。
总结
本文主要就服务器的历史演变过程介绍了Docker的新特性,以及扩展介绍了Docker的架构设计及简单上手应用。
Docker的功能和特性还有很多,各种运行命令、参数等也都有待学习和练习,比如如何管理数据、如何管理网络、如何互相配合工作、如何编写更专业的Dockerfile等。本文先入门科普为主,以后有时间再慢慢更新关于Docker的知识。
Thanks for reading!
版权声明: 本文为 InfoQ 作者【flyer0126】的原创文章。
原文链接:【http://xie.infoq.cn/article/be0e4785f5b478a09dd64a80d】。文章转载请联系作者。
评论