Container技術一覽

OdeSwint 8年前發布 | 42K 次閱讀 Docker 開源

來自: http://dockone.io/article/1062

在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工具的安裝器。 </ul> </li>

        </ul> </div>

 本文由用戶 OdeSwint 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!