Docker生态系统

鸟瞰容器生态系统

容器生态系统

        容器核心技术,容器平台技术,容器技术支持

    容器核心技术:能够让Container(容器),在host上运行起来的那些技术

包括:(容器规范、容器runtime、容器管理工具、容器定义工具、Registries、容器OS)

  • 容器规范:

runtime spec(运行规范)和image format spec(镜像格式规范)

    这两个规范可让不同组织和厂商开发的容器能够在不同的runtime上运行,保证了容器的可移植性和互操作性。

  • 容器runtime:

容器真正运行的地方,runtime和操作系统的kernel紧密协作,为容器提供运行环境。

lxc(linux上的老牌容器runtime)、runc(docker自己开发的容器runtime,现在磨人的runtime)、rkt(CoreOS开发的runtime)是目前主流的三种容器runtime。

  • 容器管理工具:

对内与runtime交互,对外为用户提供interface

lxd是lxc对应的管理工具

docker enginerunc对应的管理工具,包含后台deamon和cli两个部分

rkt clirkt的管理工具

  • 容器定义工具:

允许用户定义容器的内容和属性,使容器能够被保存、共享和创建

docker imagedocker容器的模板,runtime依据docker image创建容器

dockerfile 包含若干命令的文本文件,可以通过这些命令创建出docker image

ACI (APP Container Image):与docker image类似,有CoreOS开发的rkt容器的image格式

  • Registry:

通过image创建的,存放image的仓库。

Docker Hub (https://hub.docker.com/)docker为公众提供的托管Registry

  • 容器OS:

专门的容器操作系统,与常规的OS相比,容器OS通常体积更小,启动更快,是专门为容器定制的OS

容器技术平台:

    容器的核心技术使得容器能够在单个host上运行,而容器平台技术能够让容器作为集群在分布式环境中运行。

  • 容器编排引擎:

基于容器的应用一般会采用微服务架构。这种架构下,应用被划分为不同的组件,并以服务的形式运行在各自的容器中,通过API对外提供服务。为保证应用的高可用,每个组件都可能运行多个相同的容器,这些容器会组成群集,群集中的容器会根据业务需要被动态地创建、迁移和销毁。

    编排(orchestration):

通常包括容器管理、调度、集群定义和服务发现等。通过容器编排引擎,容器被有机地组合成微服务应用,实现业务需求。

docker swarm:docker开发的容器编排引擎

Kubernetes:Google领导开发的容器编排引擎,同时支持Docker和CoreOS容器

Mesos:通用的集群资源调度平台,mesos与marathon一起提供容器编排引擎功能。

 

  • 容器管理平台:

容器管理平台是架构在容器编排引擎之上的一个更为通用的平台。

通常支持多种编排引擎

典型代表:Rancher和ContainerShip

  • 基于容器的Paas:

为开发人员和公司提供了开发、部署和管理应用的平台

典型代表:Deis、Flynn和Dokku

 

容器支持技术:

    被用于支持基于容器的基础设施

  • 容器网络:

容器的出现使网络拓扑变得更加动态和复杂。用户需要专门的解决方案来管理容器与容器、容器与其他实体之间的连通性和隔离性。

Docker network是docker原生的网络解决方案,除此之外还可采用第三方开源解决方案:flannel、weave和calico。不同方案的设计和实现方式不同,各有优势和特点,可根据时间需要来选型。

  • 服务发现:

动态变化是微服务应用的一大特点。

当负载增加时,集群会自动创建新的容器;负载减小,多余的容器会被销毁。容器也会分局host的资源使用情况在不同host中迁移,容器的IP和端口也会随之发生变化。

服务发现会保存容器集群中所有微服务最新的信息

  • 监控:

监控对于基础架构非常重要,而容器的动态特征对监控提出更多挑战。

docker ps/top/stats 是Docker原生的命令行监控工具。

Sysdig、cAdvisor/Heapster和Weave Scope是其他开源的容器监控方案

  • 数据管理:

容器经常会在不同的host之间迁移 Rex-Ray数据管理工具提供保证持久化数据能够动态迁移

  • 日志管理:

日志为问题排查和事件管理提供了重要依据

工具:

docker logs:docker原生的日志工具

logspout:对日志提供了路由功能,可收集不同容器的日志并转发给其他工具进行后处理

  • 安全性:

OpenSCAP:能够对容器镜像进行扫描,发现潜在的漏洞

 

猜你喜欢

转载自www.cnblogs.com/xxknight/p/11440791.html