Docker篇二

1、docker简介

docker是公司开源的一款产品,dotcloud是2010年成立的一家公司,主要基于PAAS(Platform as a Service)平台为开发者提供服务,docker不是从0到1的技术,而是从1到1.5的技术。其实就是制定了一些规则。

其在制定了很多规范标准之后,使得使用容器技术更加方便,于是得到大火;

其制定的规则如下:

CNI规范:Container Network Interface(容器网络接口),基于同一个网络接口,对接同一个网络,都是可以兼容的;

CSI规范:Container Storage interface(容器存储接口),给容器对接存储的接口,保证其可以兼容很多不同的存储方式;

CRI规范:Container Runtime interface(容器运行时接口),运行核心,创建的整个流程,同一个运行时实现,不同的容器管理引擎之间是互相兼容的;

总结:docker其实主要就是制定了一些标准,告诉我们容器应该怎么样和其他进行对接,容器应该怎么去创建流程,有了这些规范之后其他企业就根据这个进行创建容器,那么最后都是可以使用的。使得互相之间实现兼容,就不会出现割裂。

PASS平台:

PAAS平台使用docker的渊源所在:

第一代PAAS,当用户加载PAAS时,自动触发脚本,从头到尾搭建环境提供给用户;

第二代PAAS,封装好运行环境,类似于EXSI的OVF模板,提前搭建不同环境的OVF模板,只需要做出来之后分发给不同的用户运行即可;缺点:运行这些环境会占用大部分空间;

于是docker便是将这个过程中的占用空间给他尽可能的减少,将中间占用系统资源量给抹除;

docker的本质:

工作在操作系统中的一个进程,进程占用资源少,这就是为什么docker能够将中间占用系统资源量给减少的原因所在。

2、docker的发展历程

LXC(Linux Container)是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源;

docker是PAAS提供商dotcloud开源的一个基于LXC的高级容器引擎,源代码托管在Github上,基于golang语言并遵从apache2.0协议开源。

docker设想是交付运行环境如同海运,OS如同一个货轮,每一个OS基础上的软件都如同一个个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人士制造;

代码在测试环境中稳定后,搬到生产环境中运行,搬运的只是代码本身,但理论上代码和环境是一个有机整体,保证不了环境不变,但是docker出现之后,问题得到解决,docker能保证两边环境一模一样。

3、 docker容器虚拟化和传统虚拟化的对比

传统虚拟化(左)VS容器级虚拟化(右)

如上图所示可知:容器级虚拟化没有虚拟化引擎和虚拟机,只有支撑文件,故消耗资源的地方更小,能够让资源利用率相对传统虚拟化进一步提升;

传统级虚拟化优点在于隔离性更强、更安全、内核级别隔离;容器级虚拟化消耗资源更低,安全性有所下降,进程级别隔离;

两者的本质区别:传统虚拟化将应用程序放到独立的内核中运行,容器级虚拟化本质上还是在物理级的内核共享,不同于应用程序之间虽然放到不同隔离环境中,但是共享的是同一个内核,代价低,秒级启动;

这就是为什么要说docker是轻量级;

①、不依赖于硬件系统;②、创建和损毁简单;③、扩容和缩容简单;④、秒级启动;⑤、基于Linux内核技术;

4、docker的构成

4.1、 构成三要素:容器、镜像、仓库

容器:镜像的运行结果,运行的实例,相当于传统虚拟化的虚拟机VM,展开后的镜像,本质上是进程;一个镜像可以运行为多个容器,一个容器只能被一个镜像所运行起来;

镜像:系统环境+应用环境的封装,对应于传统虚拟化就是ISO镜像;包含系统环境(去掉内核的外部生态),应用环境(应用的可执行文件、依赖);

Linux不同发行版之间的区别:内核+生态(包括管理工具、进程管理工具、桌面),共享内核:此内核来自物理机的共享;

镜像一般命名:mysql:5.6centos、mysql:5.6ubuntu(不同系统环境的mysql镜像)

仓库:https://hub.docker.com,对应于传统虚拟化就是下载站点,如同centos下载站点

4.2、docker自身组件

①、docker client :docker的客户端,所有命令都是基于docker client提供的,连接至docker daemon;

docker daemon不仅允许docker client的连接,还会释放出API(应用程序编程接口);

API:其不懂提供什么服务,也不知内部的原理是什么,只需要理解你怎么发数据我怎么回应就行,所以docker给我们提供一个API接口,告诉我们如果我们向他发送什么数据,他就下载镜像,向他发送什么数据他就去创建容器;

API作用:可以通过一些别的语言,Java、python、golang等去对他发起自动化调用,基于这个接口就可以实现了,基于命令行的话还需要写shell脚本去调用,这样会比较频繁,所以他的调用方式不但可以基于docker client去调用,还可以基于其他语言去调用,这就叫做基于API的调用;

②、docker server:docker daemon的主要组成部分,接受用户通过 Docker Client 发出的请求,并按照相应的路由规则实现路由分发;

docker client和docker server也可以不装在同一台机器上,即docker client只要可以通过网络访问到docker server就可以发起连接,但是因为docker本身隔离性就比传统虚拟化弱,所以官方不建议在docker server上开启远程连接的,可以做但是不建议。

一般想要连接当前的机器的容器,都会先登录到这台机器,再从这台机器的Docker Client去连接对于的容器,发起命令,而不是远程化,这样会比较危险,因两者之间没有加密。

③、docker镜像:docker镜像运行之后变成容器(docker run);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值