您的位置:首页 > 运维架构 > Docker

Docker基础原理详解

2017-03-28 17:59 423 查看
Docker本质是一个微容器,一个云计算的为PaaS容器,类似JVM,但是比其更加强大的容器,直接基于各种内核,支持各种语言;比VM虚拟机更加的轻量,能够在linux或者IaaS云平台上直接运行,带着你的应用运行到各种运行环境。

Docker本质是一个允许你创建镜像,并且让这个实例运行在容器中的软件。

Docker和容器

首先理解一下两个概念:

Docker:Docker一家公司,在13年之前公司名叫 dotCloud,Docker仅仅是一个容器管理的产品。在13年,将Docker开源,Docker风靡全球,公司也更名为Docker。

Docker的运行不需要安装额外的虚拟机,通过Docker Engine直接就可以运行在操作系统之上.

容器:在Linux中,容器技术是一种进程隔离的技术,应用可以运行在相互隔离的容器中

Docker的优势



Docker的几个状态



Docker技术剖析

namaspace的6项隔离

UTS:主机名与域名

ipc:信号量,消息队列和共享内容

PID:进程编号

Network:网络设备,网络栈,端口

Mount:文件系统

User:用户和用户组

通过namaspace可以构建一个相对隔离的容器,

cgroups(资源控制)

实现了对系统资源的限制和度量,包括cpu,io,内存等



其他相关Linux Kernel技术



Docker技术原理

基于C/S架构



可以看出Docker主要由execdriver,networkdriver,graphdriver来进行管理.其中execdriver负责配置信息的管理,然后通过libcontainer来与namespace,cgroups来完成容器的创建与及管理.而networkdriver主要是完成网络信息的配置,,graphdriver主要是对容器镜像的管理.实际上就是通过libvirt,lxc等技术来完成Docker技术管理的,

Docker网络

主要是四种模式:

Bridged:与主机与及外部进行通信

Host:只能与主机进行通信

Container:只能在容器间进行通信

None:没有网路通信

常用的是Bridged

Docker平台架构

Docker编排





Mesos介绍

两个重要角色,一个是Slave,安装集群节点上的,在一个是Master,作为集群的管理节点,slave会将节点的资源使用情况周期性的报告给我们的master节点。

Mesos配合架构的FrameWork进行资源调度,过程如下:

master会将计算机节点的资源使用情况周期性的报告给我们的Framework Scheduler

Framework Scheduler进行调配后,下发部署的任务给集群节点

节点上的framework Executor获取任务进行容器的部署(在容器的架构中,Executor就是容器的引擎)

节点会将部署结果反馈给master

Master会更新主机资源的状态给Framework Scheduler

Mesos+Marathon+Zookeeper构建云平台

Marathon是一个可以调用Docker殷勤的framework,可以将容器按照一定的调度策略部署到合适的主机上。

Zookeeper的作用是保证Marathon和 Mesos来管理节点的高可用性,即当master节点宕机之后,可以快速的选取出新的master节点,从而不影响逻辑架构。Zookeeper本身是一个分布式的高可用的架构

kubernetes的介绍(Goolge的开源容器管理项目)

mesos中的最小的单元是容器,但是kubernetes的最小的单元是Pod。容器被封装在Pod中,一个Pod中可以存放一个或者多个容器。

设计Pod的目的是:将需要紧密联系的Docker容器放置在一个独立的空间内(Pod)。

kubernetes整体架构:在部署 KVS(?)之前,需要先部署Etcd作为集群的管理工具

2个重要的角色:minion(普通节点)和master(管理节点)

Swarm的介绍(Docker公司自己的容器管理工具)

1.12版本之后,Swarm已经封装进Docker引擎中,并且自带服务发现的功能

2个重要角色:manager和worker node

Swarm1.12之后,自带服务发现的功能,可以做到manager node的高可用性。Swam也内置了负载均衡的技术,使用的是LVS,但是依然支持和其他服务发现的工具

三大编排工具比较



负载均衡与服务发现

负载均衡

请求到达负载均衡器之后,负载均衡器平均的分配到后面的容器上。

常用的负载均衡的技术:haproxy,LVS,F5,Nginx

服务发现

自动将容器的配置信息上传至配置中心(config center),包含了容器的IP,端口、对外的域名等。

常用的服务发现的技术:Etcd,Zookeeper,Consul

负载均衡器后周期性的从配置中心获取配置信息,并且将容器加入到相关的负载均衡访问j架构中

Docker日志管理

日志:包含主机、编排工具、日志、容器、容器中的应用等等相关的日志

对日志处理平台的要求:集中化、海量存储、灵活过滤、快速查询、伸缩性架构、高可用、强大的UI

日志管理软件:ELK ELK包含了3个组件:

Logstash,用于收集各种各样的日志

ElasticSearch:主要用于存储和搜索日志

Kbana:用于界面展示的管理工具

Docker监控



平台架构

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: