手记

Container生态技术一览

在Container技术生态中有很多成员,并在迅速发展,甚至很多经验丰富的专家也很难完全跟上其发展进度,初学者更是望其项背。为了让大家能对Container技术形成一个系统的认识,Sysdig(Sysdig是一家提供 Monitoring as a microservice服务的公司)对Container生态项目进行了系统性的分类整理。‌‌

目的是列出Container技术的核心技术,尽量做到MECE(mutually exclusive and collectively exhaustive,相互独立,完全穷尽),共分为四个部分:

Core Container Technologies:通过这些工具可以在单机上运行少量的容器;

Distributed Container Technologies:用这些技术可以在一个分布式的容器集群中运行应用;

Container Platform Technologies:这些技术可以打造一个完整的平台,用来在容器集群中运行分布式应用;

Container-Native SupportTechnologies:这些技术可以帮助管理基于Container的基础设施,且专门为Container打造。

每一部分又被细分为具体的技术,每项具体的技术又包括四个来源:Docker的开源技术,CoreOS的开源技术,其它开源技术和商业版本。

1

Core Container Technologies

Container Specification

标准『container』的抽象定义,可以通过多个可替代的runtime实现,使生态圈内的技术都支持标准的容器。

Docker Open Source

Open Container spec:container runtime的开放工业标准,得到了Docker,CoreOS和产业大佬的支持,由Open Container Initiative(OCI)(由Linux基金会运营)制定,目前已经抛弃了CoreOS的AppC标准;

CoreOS Open Source

AppC(不建议):CoreOS现在也支持OCI。

Container runtimes

这是你真实运行的容器(本质上是一系列Linux内核组件的抽象,比如namespace和cgroups)。

Docker Open Source

runc:Docker容器的runtime,已经贡献给了OCI作为标准实现的最初版本,本质上是libcontainer的重新打包;

libcontainer:一个Linux容器库,抽象Linux内核组件的交互,创建和控制容器;

CoreOS Open Source

rkt:CoreOS的container runtime。最初是一个AppC specification的实现,AppC specification现已并入OCI spec;

Other Open Source

OpenVZ:一个Linux Container的库

LXC:一个container库,最初被runC采用,直到libcontainer的发布

Container  management

这些工具抽象了基本的对container runtime的控制,添加了更多的功能和可用性。

Docker Open Source

Docker  Engine:Docker技术的核心及基本接口,创建和运行Docker容器,包括了Docker daemon和Docker client;

CoreOS Open Source

rkt CLI:rkt的容器管理,请求式提供,而不是运行在后台的守护进程;

Other Open Source

LXD:LXC的daemon和UI

Libvirt:支持LXC,OpenVZ和一系列hypervisor技术的容器和虚拟换管理的库

Container  definition

这些工具能让你定义一个特定的容器,从而实现保存,共享和复用。

Docker Open Source

Docker image:Docker container runtime就是从这些镜像中被创建的,镜像通过Dockerfile构建,在registry上被分享;

Dockerfile:包含了创建一个Docker镜像所需命令行的文本文件;

CoreOS Open Source

ACI(App Container Image):rkt的容器镜像格式(rkt也支持Docker镜像)。

Registries

存储和共享container镜像的仓库。

Docker Open Source

Docker Registry:开源的Docker image registry可以被托管在自有的环境中;

Commercial

灵雀云镜像中心(https://hub.alauda.cn/);

Amazon EC2 Container Registry (ECR)

Docker Hub:Docker官方库免费版

Google Container Registry

Quay.io:CoreOS的托管平台

Docker Trusted Registry

CoreOS Enterprise Registry

Operating  systems

为容器托管所设计的OS。

Docker Open Source

boot2docker:在PC和Mac上运行Docker的最小Linux虚拟机,现常被Docker Machine使用;

CoreOS Open Source

CoreOS:运行分布式,容器化应用的最小OS,包括etcd和fleet;

Other Open Source

RancherOS:最小的全容器化的OS;

Project Atomic:最小的红帽Linux。有RHEL Atomic,CentOS Atomic和Fedora Atomic三个版本;

Ubuntu Core “Snappy”:最小的Ubuntu版本;

SmartOS:Joyent出品,基于Solaris的版本包含了Zones;

Photon OS:VMware发布的最小OS版本。

VM  management

这些工具帮助你管理容器运行的虚拟化环境。

Docker Open Source

Docker  Machine:创建和管理运行Docker的主机VM环境(比如VirtualBox)和cloud VM(比如Amazon AWS,Google GCP);

Other Open Source

Hashicorp  Vagrant:基于虚拟化和Docker技术,为开发环境创建提前配置的VM;

Hashicorp  Otto:扩展了Vagrant,跨平台部署和管理VM。

2

Distributed Container Technologies

Scheduling

这些工具在抽象的底层资源上管理新容器的配置。

Docker Open Source

Docker Swarm:旨在将Docker API扩展到集群规模,包括调度和服务发现;

CoreOS Open Source

fleet:CoreOS中的编排工具,支持基本的调度,也可以被bootstrap Kubernetes使用;

Other Open Source

Chronos:Mesos的调度框架。

Cluster definition

这些工具可以让你将容器集群作为一个整体,来定义和管理。

Docker Open Source

Docker Compose:在Docker容器的集群中,定义和配置一个分布式应用的文档

CoreOS Open Source

fleet unit file:fleet用一个特定版本的systemd unit文件,来定义多个容器组成的分布式应用;

Service discovery / Distributed configuration storage

这些工具让组成一个应用的不同容器能够互相访问和共享配置信息(比如IP地址或应用配置),通常通过一个全局的分布式KV存储实现。

Docker Open Source

Docker Swarm内置了service discovery,也可以用etcd,Consul和ZooKeeper实现;

CoreOS Open Source

etcd:全局的分布式KV存储,在CoreOS中用来实现service discovery;

Other Open Source

Marathon:在Mesos中初始化长时间运行的作业,包括了service discovery和管理功能;

Hashicorp Consul:service discovery,K/V存储和集群健康监测;

Apache ZooKeeper:全局的分布式KV存储。

Dynamic configuration management

这些工具可以根据分布式KV存储中的更新,动态去更新应用设置。

CoreOS Open Source

confd:最初为etcd而生,现在支持Consul和ZooKeeper;

Other Open Source

Consul Template:Consul原生的工具;

3

Container Platform Technologies

Container  orchestration platforms

这些工具包含了容器集群管理的所有核心(上表列出的)功能,包括container management,scheduling,cluster definition和service discovery。

Docker Open Source

Docker Swarm,Compose和Machine三剑客,可以组成一个完整的编排平台,Docker Swarm还支持Kubernetes;

Other Open Source

Apache Mesos:成熟的,高扩展性的服务,可以将底层的资源抽象出来,并将应用变成分布式的任务;使用Marathon和Chronos实现集群管理,调度和service discovery;支持Kubernetes;

Kubernetes:特别为容器集群上的微服务设计的编排平台;包括了调度,集群管理和service discovery,Google出品,现已贡献给了CNCF;

Hashicorp Namad:使用了Consul。

Hosted container platforms

这些平台提供了容器托管和编排服务。

Commercial

灵雀云(http://www.alauda.cn/);

Amazon EC2 Container Service(ECS)

Google Container Engine:使用了 Kubernetes;

Tutum:已被Docker收购;

Redhat Openshift:使用了Kubernetes;

Joyent的Triton

Giant Swarm

ProfitBricks

Modulus

Rackspace Carina

Container platform management

这些技术向分布式容器环境提供了更抽象的管理和控制层,通常是通过GUI。

Docker Open Source

Project Orca:专为Docker设计的GUI

Other Open Source

Rancher

ContainerShip

Panamax

Shipyard

Joyent SmartDataCenter:使用SmartOS

Commercial

Mesosphere DCOS:使用Mesos

CoreOS Tectonic:使用 CoreOS+Kubernetes;

Nirmata:跨云的容器管理,内置了调度,service discovery,动态负载均衡和基础设施优化;

ContainerShip Enterprise

StackEngine

AppFormix

Container-based PaaS

这些平台通过管理应用代码部署和提供类PaaS的用户体验,更进一步抽象了基于容器的基础设施。

Other Open Source

Deis:基于容器的PaaS使用了CoreOS;

Flynn:基于容器的PaaS使用了etcd;

RedHat Openshift Origin

Cisco Mantl:使用了Mesos;

Dokku:最轻量级的PaaS;

Empire:为AWS ECS而生的PaaS。

4

Container-Native SupportTechnologies

Networking

网络

Docker Open Source

Docker port expose:将容器端口链接到主机端口的Docker特性;

Docker linking:提供同一主机上容器间相互连接的Docker特性;

libnetwork:进一步的容器网络库;

CoreOS Open Source

flannel:通过etcd构建的overlay network,给每一个主机一个隔离的子网;

Other Open Source

Weave:将一个分布式系统中的所有容器,放到一个虚拟网络中的overlay network,同时包含了service discovery功能;

Calico:为每个容器提供一个IP地址的3层虚拟网络。

Monitoring / Visibility

监控/可视化

Docker Open Source

Docker ps/top/stats:runtime的命令

Docker stats API:容器性能监控的远程API

Other Open Source

sysdig:深度系统/容器可视化的CLI;

cAdvisor:Google出品的收集容器运行时信息的工具,包含了GUI,Heapster为其添加了Kubernetes支持;

Weave Scope:容器网络拓扑;

Commercial

Sysdig Cloud:使用了sysdig,包括web UI,应用拓扑,并且支持所有主流的容器技术。

Data layer

数据层

Other Open Source

ClusterHQ Flocker:为有状态服务提供数据卷管理。

Log management

日志管理

Docker Open Source

Docker logs:runtime command;

Other Open Source

logspout:Docker的日志转发。

CI/CD

持续集成/持续部署

Commercial

Shippable

Wercker

Security

安全

Other Open Source

OpenSCAP

Commercial

Twistlock

Scalock

Conjur

Lynis

Getting started aides

入门助手

Docker Open Source

Docker Kitematic:为Docker初学者设计的基本Docker GUI;

Docker Toolbox:核心Docker工具的安装器。



作者:灵雀云
链接:https://www.jianshu.com/p/c4a626648770


0人推荐
随时随地看视频
慕课网APP