注冊用戶即可下載全站資源 關注Java幫幫微信公眾號
 

Docker的6年之癢!

1
發表時間:2019-06-11 11:16

Docker和容器技術的發展可謂日新月異,本文試圖以全局視角來梳理一下Docker目前的生態圈。

日本韩国三级aⅴ在线观看Docker自發布以來發生了很多的變化,有些方面的變化還非常大。對于技術愛好者來說,我們喜歡酷斃新的功能,喜歡舊功能的改善。但對生產環境中的使用者來說,他們其實不太喜歡這種頻繁的變化。不管怎樣,我們都有必要理清Docker生態系統中的眾多概念和它們之間的關系,以及Docker誕生至今(2018年)的里程碑事件。

一、百花齊放的容器技術

日本韩国三级aⅴ在线观看雖然Docker把容器技術推向了巔峰,但容器技術卻不是從Docker誕生的。實際上,容器技術連新技術都算不上,因為它的誕生和使用確實有些年頭了。下面的一串名稱可能有的你都沒有聽說過,但它們的確都是容器技術的應用:

  • Chroot Jail

  • 日本韩国三级aⅴ在线观看FreeBSD Jails

  • Linux VServer

  • 日本韩国三级aⅴ在线观看Solaris Containers

  • OpenVZ

  • Process Containers

  • LXC

  • Warden

  • LMCTFY

  • Docker

  • RKT

Chroot Jail

就是我們常見的Chroot命令的用法。它在1979年的時候就出現了,被認為是最早的容器化技術之一。它可以把一個進程的文件系統隔離起來。

The FreeBSD Jail

日本韩国三级aⅴ在线观看Freebsd Jail實現了操作系統級別的虛擬化,它是操作系統級別虛擬化技術的先驅之一。

Linux VServer

使用添加到Linux內核的系統級別的虛擬化功能實現的專用虛擬服務器。

Solaris Containers

它也是操作系統級別的虛擬化技術,專為X86和SPARC系統設計。Solaris容器是系統資源控制和通過 “區域” 提供邊界隔離的組合。

OpenVZ

日本韩国三级aⅴ在线观看OpenVZ是一種Linux中操作系統級別的虛擬化技術。它允許創建多個安全隔離的Linux容器,即VPS。

Process Containers

日本韩国三级aⅴ在线观看Process容器由Google的工程師開發,一般被稱為Cgroups。

LXC

LXC又叫Linux容器,這也是一種操作系統級別的虛擬化技術,允許使用單個Linux內核在宿主機上運行多個獨立的系統。

Warden

在最初階段,Warden使用LXC作為容器運行時。如今已被CloudFoundy取代。

LMCTFY

日本韩国三级aⅴ在线观看LMCTY是Let me contain that for you的縮寫。它是Google的容器技術棧的開源版本。Google的工程師一直在與Docker的libertainer團隊合作,并將libertainer的核心概念進行抽象并移植到此項目中。該項目的進展不明,估計會被libcontainer取代。

Docker

Docker是一個可以將應用程序及其依賴打包到幾乎可以在任何服務器上運行的容器的工具。

RKT

RKT是Rocket的縮寫,它是一個專注于安全和開放標準的應用程序容器引擎。正如我們所看到的,Docker并不是第一個容器化技術,但它的確是最知名的一個。Docker誕生于2013年,并獲得了快速的發展,下圖展示了當前Docker平臺中的組成部分:


圖0:Docker的6年之癢!


Docker立于系統基礎架構之上并為應用程序提供支撐。它由稱為Containerd的行業標準容器運行時組件,稱為Docker Swarm的本地編排工具,以及開源的Docker Community版本和提供商業管理服務的Docker Enterprise版組成。

二、與Docker相關的重要概念

Docker & LXC

Docker的第一個執行環境是LXC,但從版本0.9開始LXC被libcontainer取代。

Docker & Libcontainer

Libcontainer為Docker封裝了Linux提供的基礎功能,如Cgroups,Namespaces,NetLink和NetFilter等,如下圖所示:


圖1:Docker的6年之癢!


2015-Docker & RunC

2015年,Docker發布了RunC,一個輕量級的跨平臺的容器運行時。這基本上就是一個命令行小工具,可以直接利用libcontainer運行容器,而無需通過Docker Engine。RunC的目標是使標準容器在任何地方都可用。

Docker & OCI

OCI(The Open Containers Initiative)是一個輕量級的開放式管理架構,由Docker,CoreOS和容器行業的其他領導廠商于2015年建立。它維護一些項目,如RunC,還有容器運行時規范和鏡像規范。OCI的目的是圍繞容器行業制定標準,比如使用Docker創建的容器可以在任何其他容器引擎上運行。

2016-Docker & Containerd

2016年,Docker分拆了Containerd,并將其捐贈給了社區。將這個組件分解為一個單獨的項目,使得Docker將容器的管理功能移出Docker的核心引擎并移入一個單獨的守護進程(即Containerd)。

Docker Components

分拆完Containerd后,Docker各組件的關系如下圖所示:


圖2:Docker的6年之癢!


日本韩国三级aⅴ在线观看至此,Docker從一個單一的軟件演變成了一套相互獨立的組件和項目。

Docker如何運行一個容器?

  • 日本韩国三级aⅴ在线观看Docker引擎創建容器映像;

  • 日本韩国三级aⅴ在线观看將容器映像傳遞給Containerd;

  • 日本韩国三级aⅴ在线观看Containerd調用Containerd-Shim;

  • Containerd-Shim使用RunC來運行容器;

  • Containerd-Shim允許運行時(本例中為 RunC)在啟動容器后退出;

  • 該模型帶來的最大好處是在升級Docker引擎時不會中斷容器的運行。

2017-容器成為主流

2017年是容器成為主流技術的一年,這就是為什么Docker在Linux之外支持眾多平臺(比如Docker for Mac、Docker for Windows、Docker for AWS、GCP等)的原因。

日本韩国三级aⅴ在线观看當容器技術被大眾接受后,Docker公司意識到需要新的生產模型,這就是為什么它開始Moby項目。

三、Moby Project

Moby項目開啟了實現協作和生產的新篇章。它是一個開源項目,旨在推進軟件的容器化。Moby項目提供了數十個樂高積木一樣的組件以及將它們組裝成定制的基于容器的系統的框架。

Docker生產模型像任何其他常見的單個開源項目一樣開始:


圖3:Docker的6年之癢!


日本韩国三级aⅴ在线观看進而將單個項目拆分為不同的開放組件:


圖4:Docker的6年之癢!


然后進化到可以共享這些組件以及組件集合(Assembly)的模型:


圖5:Docker的6年之癢!


日本韩国三级aⅴ在线观看最終達到能夠提供更多關于組件和通用組件集合的協作的模型:


圖6:Docker的6年之癢!


下面我們就來介紹一些Moby項目中的組件。

Containerd

Containerd是Docker基于行業標準創建的核心容器運行時,它可以用作Linux和Windows的守護進程,并管理整個容器生命周期。

Linuxkit

日本韩国三级aⅴ在线观看Linuxkit是Moby項目中的另一個組件,它是為容器構建安全、跨平臺、精簡系統的工具。目前已經支持的本地Hypervisor有Hyper-V和VMware。支持的云平臺有AWS、Azure等。

Infrakit

Infrakit也是Moby項目的一部分。它是創建和管理聲明式、不可變和自我修復基礎架構的工具包。Infrakit旨在自動化基礎架構的設置和管理,以支持分布式系統和更高級別的容器編排系統。

Infrakit對于像Docker Swarm和Kubernetes這樣的編排工具或跨越AWS等公共云創建自動縮放群集的用例很有用。

Libnetwork

日本韩国三级aⅴ在线观看Libnetwork是用Go語言實現的容器網絡管理項目。它的目標是定義一個容器網絡模型(CNM),并為應用程序提供一致的編程接口以及網絡抽象。這樣就可以滿足容器網絡的“可組合”需求。

Docker & Docker Swarm

日本韩国三级aⅴ在线观看Docker Swarm是一個在Docker引擎中構建的編排工具,從Docker1.12開始它就作為一個獨立的工具被原生包含在Docker Engine中。我們可以使用Docker Cli通過Docker Swarm創建群集,并部署和管理應用程序和服務。下圖描述了Docker Swarm在Docker體系中的作用:


圖7:Docker的6年之癢!


Docker&Kubernetes

在Docker Swarm與Kubernetes的競爭中,顯然是Kubernetes占據了優勢。所以Docker緊急掉頭,開始原生的支持與Kubernetes的集成。

這可是2017年容器界的一大新聞啊,至此,Docker用戶和開發人員可以自由地選擇使用Kubernetes或是Swarm執行容器的編排工作。我們可以認為Docker與Kubernetes聯姻了:


圖8:Docker的6年之癢!


日本韩国三级aⅴ在线观看新的支持Kubernetes集成的Docker版本將允許用戶把他們的Docker Compose應用程序部署為Kubernetes本地Pod和服務。Kubernetes是一款非常強大且逐漸被大眾認可的本地編排工具:


圖9:Docker的6年之癢!


日本韩国三级aⅴ在线观看希望大家沒有被文中眾多的名稱和概念搞糊涂,讓我們以下圖來結束本文,它展示了從2013年到2017年從Docker Hub拉取鏡像次數的趨勢:


圖10:Docker的6年之癢!


注:本文所有圖片均來自互聯網


支付寶贊助-Java幫幫社區
微信贊助-Java幫幫社區
Java幫幫公眾號生態

Java幫幫公眾號生態

總有一款適合你

Java幫幫-微信公眾號

Java幫幫-微信公眾號

將分享做到極致

Python幫幫-公眾號

Python幫幫-公眾號

人工智能,爬蟲,學習教程

大數據驛站-微信公眾號

大數據驛站-微信公眾號

一起在數據中成長

九點編程-公眾號

九點編程-公眾號

深夜九點學編程

程序員生活志-公眾號

程序員生活志-公眾號

互聯網,職場,程序員那些事兒

Java幫幫學習群生態

Java幫幫學習群生態

總有一款能幫到你

Java學習群

Java學習群

與大牛一起交流

大數據學習群

大數據學習群

在數據中成長

九點編程學習群

九點編程學習群

深夜九點學編程

python學習群

python學習群

人工智能,爬蟲

測試學習群

測試學習群

感受測試的魅力

Java幫幫生態承諾

Java幫幫生態承諾

一直堅守,不負重望

初心
勤儉
誠信
正義
分享
合作品牌 非盈利生態-優質內容分享傳播者
關于我們
友鏈申請
友鏈交換:加幫主QQ2524138991 留言即可 24小時內答復  
全站內容非商業用途,內容來源于網友,并遵循 許可,如有異議請聯系客服。
會員登錄
獲取驗證碼
登錄
登錄
我的資料
留言
回到頂部