關於容器的發展史linux
關於容器有不得不說的歷史故事,如下資料來自於互聯網收集整理所得:docker
容器概念始於 1979 年提出的 UNIX chroot,它是一個 UNIX 操做系統的系統調用,將一個進程及其子進程的根目錄改變到文件系統中的一個新位置,讓這些進程只能訪問到這個新的位置,從而達到了進程隔離的目的。安全
2000 年的時候 FreeBSD 開發了一個相似於 chroot 的容器技術 Jails,這是最先期,也是功能最多的容器技術。Jails 英譯過來是監獄的意思,這個「監獄」(用沙盒更爲準確)包含了文件系統、用戶、網絡、進程等的隔離。服務器
2001 Linux 也發佈本身的容器技術 Linux VServer,2004 Solaris 也發佈了 Solaris Containers,二者都將資源進行劃分,造成一個個 zones,又叫作虛擬服務器。網絡
2005 年推出 OpenVZ,它經過對 Linux 內核進行補丁來提供虛擬化的支持,每一個 OpenVZ 容器完整支持了文件系統、用戶及用戶組、進程、網絡、設備和 IPC 對象的隔離。負載均衡
2007 年 Google 實現了 Control Groups( cgroups ),並加入到 Linux 內核中,這是劃時代的,爲後期容器的資源配額提供了技術保障。分佈式
2008 年基於 cgroups 和 linux namespace 推出了第一個最爲完善的 Linux 容器 LXC。性能
2013 年推出到如今爲止最爲流行和使用最普遍的容器 Docker,相比其餘早期的容器技術,Docker 引入了一整套容器管理的生態系統,包括分層的鏡像模型,容器註冊庫,友好的 Rest API。ui
2014 年 CoreOS 也推出了一個相似於 Docker 的容器 Rocket,CoreOS 一個更加輕量級的 Linux 操做系統,在安全性上比 Docker 更嚴格。spa
2016 年微軟也在 Windows 上提供了容器的支持,Docker 能夠以原生方式運行在 Windows 上,而不是須要使用 Linux 虛擬機。
容器與虛擬機的區別
左邊是虛擬機右邊是容器,從感官上,虛擬機的層級明顯是比容器多,多了一個操做系統,而容器則是在原有操做系統上利用資源隔離等相關技術作了封裝並實現了在應用層互相獨立隔離,達到了相似虛擬機之間隔離獨立的效果而性能損失較虛擬機這種方式少。虛擬機的方式也不是一無可取,虛擬機有它自身的優勢,好比他是以上層再運行多個操做系統實例的方式作承載和隔離,更符合計算機的運行機制,程序代碼遷移成本也更低,容器則每每須要必定的技術積累,才能作好容器對應的鏡像。整體來說,方案沒有絕對的優劣之分,只有最適合本身需求的就是好方案。
容器的特色
一句話總結容器的特色:Build once,Run anywhere !(搭建一次,處處能用)
Docker技術的三大核心概念,分別是:
● 鏡像(Image)
● 容器(Container)
● 倉庫(Repository)
這些咱們在後續的實戰文章會詳細展開描述,同時還會介紹容器的更多優勢和便捷性。
不得不說的K8S
Kubernetes(簡稱K8s,是用8代替8個字符「ubernete」而成的縮寫)是Google開源的一個容器編排引擎。既然已經有了流行的docker產品了,爲何還會衍生出一個k8s並且獲得衆多雲商青睞並在k8s基礎上退出本身的容器服務DaaS呢,那就不得不說k8s的特色:
● 協調輔助進程,協助應用程序整合,維護一對一「程序 – 鏡像」模型。
● 掛載存儲系統
● 分佈式機密信息
● 檢查程序狀態
● 複製應用實例
● 使用橫向莢式自動縮放
● 命名與發現
● 負載均衡
● 滾動更新
● 資源監控
● 訪問並讀取日誌
● 程序調試
● 提供驗證與受權