返回 登录
0

关于Docker你不知道的事——什么是Docker

阅读4470

关于Docker你不知道的事——什么是Docker

作者:张言,精灵云产品总监,虚拟化领域专家,曾任IBM和VMWare资深产品经理,对IaaS/PaaS产品有丰富的经验,实际参与国内多加IDC中心PaaS平台搭建工作。网址:https://www.ghostcloud.cn

  之前我们在谈虚拟化历史就说过,Docker实际是源自于dotCloud的一个项目,在2013年开源后进入了飞速发展模式。那我们今天就要来聊一聊Docker,到底什么是Docker?

Docker-engine

  通常我们提Docker的时候,都指的是Docker-engine,docker-engine就是运行在主机上的一个守护进程,类似于于Hyper-V的管理程序。Docker-engine是C/S的架构,daemon就是它的server,我们通常使用的docker命令有两层功能,一层是作为daemon运行,一层是作为client运行。daemon可以监听在某一个socket端口上,也可以监听到unix本地socket之上,而client也可以操作本机的daemon和远程的daemon。当操作远程daemon的时候,需要在client后面跟IP、端口以及TLS证书。

容器是什么?

  谈到容器,很多人会把它当成是一个主机。这其实是错误的。容器在主机上就是一个进程,但是它有不同于普通的进程。普通的进程之间是共用的CPU、内存、网络、PID等资源,而容器是隔离的进程,它运行在一个沙盒之中,同时还能限定它所使用的资源。这主要借助于Linux Kernel的CGroup和Namespace技术,CGroup可以控制进程使用多少资源,如:CPU、内存、磁盘IO速率等,Namespace用来隔离资源,如:PID、网络、主机名等。正因为如此Docker最初原生只支持Linux,后来所谓的跨平台支持也只是通过VM来远程操控。不过Windows Server 2016已经加入了对Docker的原生支持。

怎么运行?

  一个进程肯定少不了对于内容的需求,就好比一台电脑不能没有硬盘。容器的内容就是它的Layered FS,这个也可以说是Docker创新的一方面。它使用了Copy-on-right的技术,将文件系统进行了分层,可以充分的复用公共部分。镜像其实很像以前我们安装操作系统的Ghost镜像,使用户能够快速的安装它需要的软件。容器运行时,就会装载镜像文件,以及相关的环境,同时在最上层加入一个可写层。

容器能解决什么问题?

  由于容器的轻量化,容器能解决的根本问题就是提升效率和速度。Docker 宣称的是Build, Ship and Run anywhere,只是从速度、效率和可移植性来讲的。但是,你有没有想过,云计算一直要解决的是什么问题——水平扩展,水平扩展是不是就需要很多的结点。对了,Docker会成为云计算的基础架构,这才是docker这么火的根本原因。说到具体的用途,我总结了一些:

  • 标准化应用发布,docker容器包含了运行环境和可执行程序,可以跨平台和主机使用;
  • 节约时间,快速部署和启动,VM启动一般是分钟级,docker容器启动是秒级;
  • 方便构建基于SOA架构或微服务架构的系统,通过服务编排,更好的松耦合;
  • 节约成本,以前一个虚拟机至少需要几个G的磁盘空间,docker容器可以减少到MB级;
  • 方便持续集成,通过与代码进行关联使持续集成非常方便;
  • 可以作为集群系统的轻量主机或节点,在IaaS平台上,已经出现了CaaS,通过容器替代原来的主机。
评论