天天看點

容器技術發展程序系列文章目錄前言一、容器技術發展程序總結

系列文章目錄

第一章:容器技術發展程序

文章目錄

  • 系列文章目錄
  • 前言
  • 一、容器技術發展程序
  • 總結

前言

容器已成為現在軟體的基礎架構

一、容器技術發展程序

時間 容器技術 技術描述
chroot時代 1979

unix

chroot

1979年,在開發Version 7 Unix時,chroot系統調用首次問世。chroot是Unix系統的一個系統操作,作用于正在運作的程序和它的子程序,改變它外顯的根目錄。它不能對這個指定根目錄之外的檔案程序存儲、讀取、修改。

由chroot建立的那個根目錄叫做“chroot jail”--“chroot監獄”。

2000 FreeBSD Jails

2000年,FreeBSD團隊将chroot機制導入虛拟化技術的概念,開發了新的jail系統指令,并伴随着FreeBSD 4.0版本一同釋出。

FreeBSD Jails是一種作業系統層虛拟化技術,利用這個技術,FreeBSD系統管理者,可以創造出幾個小型的軟體系統,這些軟體系統被稱為jails(監獄)

每個jail都是機器上運作的一個虛拟環境,有它自己的檔案系統,程序,使用者與超級使用者賬号。軟體在jails内運作跟實際的作業系統環境幾乎一樣。

2001 LlinuxVServer Jails

LinuxVServer是一種Jail機制,它可以安全的對計算機系統上的資源(例如:CPU時間、記憶體、網絡位址和檔案系統)進行分區,每個分區稱為“安全上下文”,提供了類似chroot的實用程式,可用于進入安全上下文。

其中虛拟系統叫做虛拟私有伺服器(Virtual Private Server,VPS)。

2004 Solaris Container

zone是一個單一的作業系統實體,是一個獨立虛拟伺服器,完全與其他實體隔開。通過zone,Solaris Container獲得系統資源,并且與其他軟體隔離,在沙盒中獨立運作。

這個技術是由unix系統中的chroot進一步發展而來

2005 Open VZ

OpenVZ是基于Linux核心的作業系統級虛拟化技術。OpenVZ運作實體伺服器運作多個作業系統,該技術常用于虛拟專用伺服器(VPS,Virtual Private Server),OpenVZ的主機和客戶系統都必須是Linux。

Linux作業系統級虛拟化技術,每個Open VZ容器都有一套隔離的檔案系統、使用者、使用者組、程序樹、網絡、裝置和IPC對象。

OpenVZ的Linux客戶系統共享OpenVZ主機Linux系統的核心,也就意味着OpenVZ的Linux客戶系統不能更新核心。

LXC時代 2006 Cgroups (Process Containers) 

2006年谷歌推出Process Containers程序容器技術,用于限制、控制與分離一個程序組的資源(CPU、記憶體、磁盤I/O、網絡)。

在2007年時,因為在Linux核心中,容器(Container)這個名詞有許多不同的意義,為避免混亂,被重命名為cgroup,并合并到Linux核心2.6.24中。

cgroups提供:資源限制(使用不操作設定值)、優先級(讓一些組可以分得大量資源)、結算(度量實際用了多少資源)、控制(當機組和重新開機動)

2008 LXC(Linux Container) 2008年,基于Cgroups資源管理和Namespaces資源隔離技術,實作了Linux Container(LXC)。LXC是第一個最完整的Linux容器實作方案。
Container和K8S時代 2011 Warden

Warden由CloudFoundry在2011年成立,早期階段使用LXC,但後來替換了LXC。Warden可以作為守護程序運作,并為容器管理提供API,進而在任何作業系統上隔離環境。

Warden還包括一個管理cgroups、命名空間和程序生命周期的服務。

2013 LMCTFY

2013年,LMCTFY(Let Me Contain That For You)作為Google容器技術的開源項目,提供“高資源使用率、資源共享、性能可保證、接近零消耗”的容器。

應用程式可以被容器感覺,建立和管理自己的子容器。

2015年,Google開始講LMCTFY的核心概念貢獻給Libcontainer,就停止了對LMCTFY項目的開發維護工作。Libcontainer現在是Open Container Foundation(開放容器基金會)托管。 

2013 Docker

2013年,Docker是一種Linux容器(LXC)技術,增加了進階API,提供了一種輕量級的虛拟化解決方案,可以獨立運作Unix程序。提供了可預測、安全、可重複、自動化部署軟體。進階API允許系統管理者在容器上執行:啟動、停止、複制、等待、送出、附加标準流、列出檔案系統更改等。

Docker最初是一個叫做dotClout的PaaS服務公司的内部項目,後來公司改名為Docker。它提供一整套容器的生态系統,包括高校、分層的容器鏡像模型、全局和本地的容器注冊庫、清晰的REST API、指令行等。Docker最初階段使用LXC,後來用自己的libcontainer庫提供。Docker也推出了Docker Swarm的容器叢集管理方案。

2014 rkt容器

2014年,CoreOS釋出并開始支援rkt(最開始釋出為Rocket),作為Docker的替代品,提供了應用程式容器鏡像的另一種标準格式、容器運作時,以及容器發現和檢索協定。CoreOS的rkt容器的出現,使使用者有了更多的選擇,并促成了容器社群的良性循環。

CoreOS也開發了其它幾個可用于Docker和Kubernetes容器相關的産品,例如:CoreOS作業系統、etcd和flannel。

2015 kubernetes 2015年,Google釋出Kubernetes v1.0釋出。釋出同時,谷歌與Linux基金會合作,成立了雲原生計算基金會(CNCF),Kubernetes是CNCF的第一個項目。Kubernetes是Borg的開源版本(Borg是一個大型核心叢集管理系統,用于運作數十萬個作業,來自數千個不同的應用程式,并且跨許多叢集,每個叢集有數萬台機器)。
2016 Windows Containers

2015年,微軟在Windows Server上為基于Windows的應用添加了容器支援,稱為Windows Containers,它與Windows Server 2016一同釋出。

Docker可以原生的在Windows上運作Docker容器,而不需要啟動一個虛拟機來運作Docker。

2017 容器工具

2016年Google将kubernetes捐給CNCF,VMWare、Azure、AWS、Docker等宣布在其基礎架構上提供支援,2017年kubernetes發展火爆。

2017年CoreOS和Docker聯合提議将rkt和containerd納入CNCF

2017年Docker剝離核心容器運作時containerd捐給CNCF。Docker捐贈的主要目錄是通過提供一個核心容器運作時來促進容器生态系統的進一步創新,容器系統供應商和編排項目(Kubernetes、Swarm等)可以利用這個核心容器運作時。

2018 k8s 2018年,容器成為現在軟體的基礎架構,Kubernetes有史以來第一次被大量企業使用。截止2018年初,GitHub上的Kubernetes項目有27000多個Star,1500多個貢獻者,成為最重要的開源社群之一。讓更多的企業,如:AWS、Oracle、Google、Azure、VMWare、RedHat和Rancher都開始提供基于Kubernetes的管理平台。
2019 serverless

2019年新的運作時引擎(Containerd和CRI-O)開始替代docker運作引擎。CRI-O能讓使用者直接從Kubernetes運作容器,而無需任何不必要的代碼或工具,隻要容器符合OCI标準,CRI-O就可以運作它。

2019年serverless無伺服器計算平台也取得了進步,允許開發人員更輕松的運作并部署代碼片,且這些代碼片段能快速實作規模伸縮以響應事件需求。由Google、IBM等發起的Knative。

2019年推出了基于Kubernetes的混合雲解決方案,如:IBM CloudPaks、谷歌Anthos、AWS Outosts和Azure Arc。

未來 待更新

總結

新應用系統會大量使用容器技術,Kubernetes已經成為每個人都想使用的容器編排技術。但企業對容器和相關技術還需要進行不斷改進,從集中的容器編排到與雲内或雲間其他叢集無縫寫作的分布式雲叢集。