精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

技術(shù)選型之Docker容器引擎

云計算
最近對Docker和Kubernetes進行了一番學習,前兩天做了一次技術(shù)分享,回去聽了一遍自己演講的錄音,發(fā)現(xiàn)單單PPT做好還是遠遠不夠的,沒有提前準備好邏輯嚴謹?shù)闹v稿,在講的時候出現(xiàn)了卡殼、漏掉技術(shù)點、邏輯矛盾的問題。

最近對Docker和Kubernetes進行了一番學習,前兩天做了一次技術(shù)分享,回去聽了一遍自己演講的錄音,發(fā)現(xiàn)單單PPT做好還是遠遠不夠的,沒有提前準備好邏輯嚴謹?shù)闹v稿,在講的時候出現(xiàn)了卡殼、漏掉技術(shù)點、邏輯矛盾的問題。

為了解決這個問題,我打算以后在做技術(shù)分享前,都按著PPT的內(nèi)容先寫成博客,理順表達邏輯。另外,我覺得每次技術(shù)分享使用的PPT都應(yīng)該盡可能的做好,因為你不知道未來會不會還要拿來再講幾遍。本文以PPT+講稿的方式編寫,權(quán)當對自己這次技術(shù)分享做個記錄,歡迎大家拍磚。

[[285382]]

1. Docker出現(xiàn)的背景

在平常的研發(fā)和項目場景中,以下情況普遍存在:

個人開發(fā)環(huán)境

為了做大數(shù)據(jù)相關(guān)項目,需要安裝一套CDH集群,常見的做法是在自己電腦里搭建3臺與CDH版本對應(yīng)的虛擬機,把CDH集群裝起來后,考慮到以后很有可能還要使用一個干凈的CDH集群,為了避免以后重復(fù)安裝環(huán)境,通常會對整套CDH集群做一個備份,這樣電腦里就有6個虛擬機鏡像了。

另外,后面在學習其他技術(shù)時,比如學習Ambari大數(shù)據(jù)集群,那么為了不破壞已有的虛擬機環(huán)境,又要重新搭建3臺虛擬機,本機磁盤很快被一大堆的虛擬機鏡像占滿。

公司內(nèi)部開發(fā)環(huán)境

公司里往往會以小團隊的方式來做項目,一般由運維部門從他們管理的服務(wù)器資源中分配出虛擬機供團隊內(nèi)部開發(fā)測試使用。比如做一個與機器學習相關(guān)的項目:

  • 小明在運維部門分配的虛擬機上搭建了一套Ambari集群,拿來跑大數(shù)據(jù)相關(guān)業(yè)務(wù)
  • 小剛用python3寫了一個機器學習算法,放到虛擬機上運行發(fā)現(xiàn)虛擬機里是python2,算法不兼容,于是把虛擬機里的python版本升級了,算法跑通了,但Ambari用到python的部分功能可能就報錯了
  • 小李開發(fā)了應(yīng)用,放到虛擬機上啟動tomcat,發(fā)現(xiàn)虛擬機里的是OpenJDK,導(dǎo)致tomcat起不來,于是又安裝了一個JDK,這時候可能Ambari里的Java代碼可能就報錯了
  • 小趙想利用服務(wù)器資源做性能測試,發(fā)現(xiàn)虛擬機嚴重削減了性能,最終還是要直接找物理機來跑測試,破壞了物理機原來的環(huán)境
  • 做完項目后,這些虛擬機上安裝的東西往往變得沒用了,下個項目組來還是得新申請?zhí)摂M機重新部署軟件

開發(fā)/測試/現(xiàn)場環(huán)境

研發(fā)人員在開發(fā)環(huán)境里寫好了代碼做好測試后,提交給測試部門,測試人員在測試環(huán)境跑起來發(fā)現(xiàn)有BUG,研發(fā)人員說在開發(fā)環(huán)境沒這個BUG,和測試人員多次扯皮解決BUG后發(fā)布版本,發(fā)到現(xiàn)場在生產(chǎn)環(huán)境部署后,又發(fā)現(xiàn)有BUG,這下輪到工程人員和測試人員扯皮。有時候為了兼容特殊的現(xiàn)場環(huán)境,還需要對代碼進行定制化修改,拉出分支,這樣導(dǎo)致了每次到現(xiàn)場升級都是一場噩夢

升級或遷移項目

在每次發(fā)版本要升級到現(xiàn)場時,如果現(xiàn)場起了多個tomcat應(yīng)用,那么需要對每個tomcat都先停掉,替換war包,然后再起起來,輪流著做,不僅繁瑣而且很容易出錯,如果遇到升級后出現(xiàn)嚴重BUG,還要手工做回退。

另外,如果項目想上云,那么在云上部署后要重新進行一輪測試,如果后面考慮還云廠商,可能相同的測試還要再進行一次(比如更換了數(shù)據(jù)存儲組件),費時費力。

總結(jié)以上列舉的所有場景,他們存在的一個共同的問題是:沒有一種既能夠屏蔽操作系統(tǒng)差異,又能夠以不降低性能的方式來運行應(yīng)用的技術(shù),來解決環(huán)境依賴的問題。Docker應(yīng)運而生。

2. Docker是什么 

技術(shù)選型之Docker容器引擎

Docker是一種應(yīng)用容器引擎。

首先說一下何為容器,Linux系統(tǒng)提供了Namespace和CGroup技術(shù)實現(xiàn)環(huán)境隔離和資源控制,其中Namespace是Linux提供的一種內(nèi)核級別環(huán)境隔離的方法,能使一個進程和該進程創(chuàng)建的子進程的運行空間都與Linux的超級父進程相隔離。

注意Namespace只能實現(xiàn)運行空間的隔離,物理資源還是所有進程共用的,為了實現(xiàn)資源隔離,Linux系統(tǒng)提供了CGroup技術(shù)來控制一個進程組群可使用的資源(如CPU、內(nèi)存、磁盤IO等),把這兩種技術(shù)結(jié)合起來,就能構(gòu)造一個用戶空間獨立且限定了資源的對象,這樣的對象稱為容器。

Linux Container是Linux系統(tǒng)提供的容器化技術(shù),簡稱LXC,它結(jié)合Namespace和CGroup技術(shù)為用戶提供了更易用的接口來實現(xiàn)容器化。LXC僅為一種輕量級的容器化技術(shù),它僅能對部分資源進行限制,無法做到諸如網(wǎng)絡(luò)限制、磁盤空間占用限制等。dotCloud公司結(jié)合LXC和以下列出的技術(shù)實現(xiàn)了Docker容器引擎,相比于LXC,Docker具備更加全面的資源控制能力,是一種應(yīng)用級別的容器引擎。

  • Chroot:該技術(shù)能在container里構(gòu)造完整的Linux文件系統(tǒng);
  • Veth:該技術(shù)能夠在主機上虛擬出一張網(wǎng)卡與container里的eth0網(wǎng)卡進行橋接,實現(xiàn)容器與主機、容器之間的網(wǎng)絡(luò)通信;
  • UnionFS:聯(lián)合文件系統(tǒng),Docker利用該技術(shù)“Copy on Write”的特點實現(xiàn)容器的快速啟動和極少的資源占用,后面會專門介紹該文件系統(tǒng);
  • Iptables/netfilter:通過這兩個技術(shù)實現(xiàn)控制container網(wǎng)絡(luò)訪問策略;
  • TC:該技術(shù)主要用來做流量隔離,限制帶寬;
  • Quota:該技術(shù)用來限制磁盤讀寫空間的大小;
  • Setrlimit:該技術(shù)用來限制container中打開的進程數(shù),限制打開的文件個數(shù)等

也正是因為Docker依賴Linux內(nèi)核的這些技術(shù),至少使用3.8或更高版本的內(nèi)核才能運行Docker容器,官方建議使用3.10以上的內(nèi)核版本。

3. 與傳統(tǒng)虛擬化技術(shù)的區(qū)別 

技術(shù)選型之Docker容器引擎

傳統(tǒng)的虛擬化技術(shù)在虛擬機(VM)和硬件之間加了一個軟件層Hypervisor,或者叫做虛擬機管理程序。Hypervisor的運行方式分為兩類:

  • 直接運行在物理硬件之上。如基于內(nèi)核的KVM虛擬機,這種虛擬化需要CPU支持虛擬化技術(shù);
  • 運行在另一個操作系統(tǒng)。如VMWare和VitrualBox等虛擬機。

因為運行在虛擬機上的操作系統(tǒng)是通過Hypervisor來最終分享硬件,所以虛擬機Guest OS發(fā)出的指令都需要被Hypervisor捕獲,然后翻譯為物理硬件或宿主機操作系統(tǒng)能夠識別的指令。

VMWare和VirtualBox等虛擬機在性能方面遠不如裸機,但基于硬件虛擬機的KVM約能發(fā)揮裸機80%的性能。這種虛擬化的優(yōu)點是不同虛擬機之間實現(xiàn)了完全隔離,安全性很高,并且能夠在一臺物理機上運行多種內(nèi)核的操作系統(tǒng)(如Linux和Window),但每個虛擬機都很笨重,占用資源多而且啟動很慢。

Docker引擎運行在操作系統(tǒng)上,是基于內(nèi)核的LXC、Chroot等技術(shù)實現(xiàn)容器的環(huán)境隔離和資源控制,在容器啟動后,容器里的進程直接與內(nèi)核交互,無需經(jīng)過Docker引擎中轉(zhuǎn),因此幾乎沒有性能損耗,能發(fā)揮出裸機的全部性能。

但由于Docker是基于Linux內(nèi)核技術(shù)實現(xiàn)容器化的,因此使得容器內(nèi)運行的應(yīng)用只能運行在Linux內(nèi)核的操作系統(tǒng)上。目前在Window上安裝的docker引擎其實是利用了Window自帶的Hyper-V虛擬化工具自動創(chuàng)建了一個Linux系統(tǒng),容器內(nèi)的操作實際上是間接使用這個虛擬系統(tǒng)實現(xiàn)的。

4. Docker基本概念 

技術(shù)選型之Docker容器引擎

Docker主要有如下幾個概念:

  • 引擎:創(chuàng)建和管理容器的工具,通過讀取鏡像來生成容器,并負責從倉庫拉取鏡像或提交鏡像到倉庫中;
  • 鏡像:類似于虛擬機鏡像,一般由一個基本操作系統(tǒng)環(huán)境和多個應(yīng)用程序打包而成,是創(chuàng)建容器的模板;
  • 容器:可看作一個簡易版的Linxu系統(tǒng)環(huán)境(包括root用戶權(quán)限、進程空間、用戶空間和網(wǎng)絡(luò)空間等)以及運行在其中的應(yīng)用程序打包而成的盒子;
  • 倉庫:集中存放鏡像文件的場所,分為公共倉庫和私有倉庫,目前最大的公共倉庫是官方提供的Docker Hub,此外國內(nèi)的阿里云、騰訊云等也提供了公共倉庫;
  • 宿主機:運行引擎的操作系統(tǒng)所在服務(wù)器。

5. Docker與虛擬機、Git、JVM的類比

為了讓大家對Docker有更直觀的認識,下面分別進行三組類比: 

技術(shù)選型之Docker容器引擎

上圖中Docker的鏡像倉庫類似于傳統(tǒng)虛擬機的鏡像倉庫或存放鏡像的本地文件系統(tǒng),Docker引擎啟動容器來運行Spark集群(容器內(nèi)包含基礎(chǔ)的Linux操作系統(tǒng)環(huán)境),類比于虛擬機軟件啟動多個虛擬機,在虛擬機內(nèi)分別運行Spark進程,兩者區(qū)別在于Docker容器內(nèi)的應(yīng)用在使用物理資源時,直接與內(nèi)核打交道,無需經(jīng)過Docker引擎。 

技術(shù)選型之Docker容器引擎

Docker的倉庫思想與Git是相同的。 

技術(shù)選型之Docker容器引擎

Docker的口號是“Build,Ship,and Run Any App,Anywhere”,也就是可以基于Docker構(gòu)建、裝載和運行應(yīng)用程序,一次構(gòu)建到處運行。Java的口號是“Write Once,Run Anywhere”,即一次編寫到處運行。

Java是基于JVM適配操作系統(tǒng)的特點來屏蔽系統(tǒng)的差異,Docker則是利用內(nèi)核版本兼容性的特點來實現(xiàn)一次構(gòu)建導(dǎo)出運行,只要Linux系統(tǒng)的內(nèi)核是3.8或更高的版本,就都能把容器跑起來。

當然,正如Java中如果應(yīng)用代碼使用了JDK10的新特性,基于JDK8就無法運行一樣,如果容器內(nèi)的應(yīng)用使用了4.18版本的內(nèi)核特性,那么在CentOS7(內(nèi)核版本為3.10)啟動容器時,雖然容器能夠啟動,但里面應(yīng)用的功能是無法正常運行的,除非把宿主機的操作系統(tǒng)內(nèi)核升級到4.18版本。

6. Docker鏡像文件系統(tǒng) 

技術(shù)選型之Docker容器引擎

Docker鏡像采用分層存儲格式,每個鏡像可依賴其他鏡像進行構(gòu)建,每一層的鏡像可被多個鏡像引用,上圖的鏡像依賴關(guān)系,K8S鏡像其實是CentOS+GCC+GO+K8S這四個軟件結(jié)合的鏡像。

這種分層結(jié)構(gòu)能充分共享鏡像層,能大大減少鏡像倉庫占用的空間,而對用戶而言,他們所看到的容器,其實是Docker利用UnionFS(聯(lián)合文件系統(tǒng))把相關(guān)鏡像層的目錄“聯(lián)合”到同一個掛載點呈現(xiàn)出來的一個整體,這里需要簡單介紹一個UnionFS是什么:

UnionFS可以把多個物理位置獨立的目錄(也叫分支)內(nèi)容聯(lián)合掛載到同一個目錄下,UnionFS允許控制這些目錄的讀寫權(quán)限,此外對于只讀的文件和目錄,它具有“Copy on Write(寫實復(fù)制)”的特點,即如果對一個只讀的文件進行修改,在修改前會先把文件復(fù)制一份到可寫層(可能是磁盤里的一個目錄),所有的修改操作其實都是對這個文件副本進行修改,原來的只讀文件并不會變化。

其中一個使用UnionFS的例子是:Knoppix,一個用于Linux演示、光盤教學和商業(yè)產(chǎn)品演示的Linux發(fā)行版,它就是把一個CD/DVD和一個存在在可讀寫設(shè)備(例如U盤)聯(lián)合掛載,這樣在演示過程中任何對CD/DVD上文件的改動都會在被應(yīng)用在U盤上,不改變原來的CD/DVD上的內(nèi)容。

UnionFS有很多種,其中Docker中常用的是AUFS,這是UnionFS的升級版,除此之外還有DeviceMapper、Overlay2、ZFS和 VFS等。Docker鏡像的每一層默認存放在/var/lib/docker/aufs/diff目錄中,當用戶啟動一個容器時,Docker引擎首先在/var/lib/docker/aufs/diff中新建一個可讀寫層目錄,然后使用UnionFS把該可讀寫層目錄和指定鏡像的各層目錄聯(lián)合掛載到/var/lib/docker/aufs/mnt里的一個目錄中(其中指定鏡像的各層目錄都以只讀方式掛載),通過LXC等技術(shù)進行環(huán)境隔離和資源控制,使容器里的應(yīng)用僅依賴mnt目錄中對應(yīng)的掛載目錄和文件運行起來。

利用UnionFS寫實復(fù)制的特點,在啟動一個容器時, Docker引擎實際上只是增加了一個可寫層和構(gòu)造了一個Linux容器,這兩者都幾乎不消耗系統(tǒng)資源,因此Docker容器能夠做到秒級啟動,一臺服務(wù)器上能夠啟動上千個Docker容器,而傳統(tǒng)虛擬機在一臺服務(wù)器上啟動幾十個就已經(jīng)非常吃力了,而且虛擬機啟動很慢,這是Docker相比于傳統(tǒng)虛擬機的兩個巨大的優(yōu)勢。

當應(yīng)用只是直接調(diào)用了內(nèi)核功能來運作的情況下,應(yīng)用本身就能直接作為最底層的層來構(gòu)建鏡像,但因為容器本身會隔絕環(huán)境,因此容器內(nèi)部是無法訪問宿主機里文件的(除非指定了某些目錄或文件映射到容器內(nèi)),這種情況下應(yīng)用代碼就只能使用內(nèi)核的功能。

但是Linux內(nèi)核僅提供了進程管理、內(nèi)存管理、文件系統(tǒng)管理等一些基礎(chǔ)且底層的管理功能,在實際的場景中,幾乎所有軟件都是基于操作系統(tǒng)來開發(fā)的,因此往往都需要依賴操作系統(tǒng)的軟件和運行庫等,如果這些應(yīng)用的下一層直接是內(nèi)核,那么應(yīng)用將無法運行。所以實際上應(yīng)用鏡像往往底層都是基于一個操作系統(tǒng)鏡像來補足運行依賴的。

Docker中的操作系統(tǒng)鏡像,與平常安裝系統(tǒng)時用的ISO鏡像不同。ISO鏡像里包含了操作系統(tǒng)內(nèi)核及該發(fā)行版系統(tǒng)包含的所有目錄和軟件,而Docker中的操作系統(tǒng)鏡像,不包含系統(tǒng)內(nèi)核,僅包含系統(tǒng)必備的一些目錄(如/etc /proc等)和常用的軟件和運行庫等,可把操作系統(tǒng)鏡像看作內(nèi)核之上的一個應(yīng)用,一個封裝了內(nèi)核功能,并為用戶編寫的應(yīng)用提供運行環(huán)境的工具。

應(yīng)用基于這樣的鏡像構(gòu)建,就能夠利用上相應(yīng)操作系統(tǒng)的各種軟件的功能和運行庫,此外,由于應(yīng)用是基于操作系統(tǒng)鏡像來構(gòu)建的,就算換到另外的服務(wù)器,只要操作系統(tǒng)鏡像中被應(yīng)用使用到的功能能適配宿主機的內(nèi)核,應(yīng)用就能正常運行,這就是一次構(gòu)建到處運行的原因。

下圖形象的表現(xiàn)出了鏡像和容器的關(guān)系: 

技術(shù)選型之Docker容器引擎

上圖中Apache應(yīng)用基于emacs鏡像構(gòu)建,emacs基于Debian系統(tǒng)鏡像構(gòu)建,在啟動為容器時,在Apache鏡像層之上構(gòu)造了一個可寫層,對容器本身的修改操作都在可寫層中進行。Debian是該鏡像的基礎(chǔ)鏡像(Base Image),它提供了內(nèi)核Kernel的更高級的封裝。同時其他的鏡像也是基于同一個內(nèi)核來構(gòu)建的(以下的BusyBox是一個精簡版的操作系統(tǒng)鏡像): 

技術(shù)選型之Docker容器引擎

這時候就會有一個問題,應(yīng)用基于操作系統(tǒng)鏡像來構(gòu)建,那如果操作系統(tǒng)鏡像本身就很占空間,豈不是鏡像的分發(fā)不方便,而且鏡像倉庫占用的空間也會很大。有人已經(jīng)考慮到這一點,針對不同的場景分別構(gòu)造了不同的操作系統(tǒng)鏡像,下面介紹幾種最常用的系統(tǒng)鏡像。

7. Docker基礎(chǔ)操作系統(tǒng) 

技術(shù)選型之Docker容器引擎

以上系統(tǒng)鏡像分別適用于不同的場景:

  • BusyBox:一個極簡版的Linux系統(tǒng),集成了100多種常用Linux命令,大小不到2MB,被稱為“Linux系統(tǒng)的瑞士軍刀”,適用于簡單測試場景;
  • Alpine:一個面向安全的輕型Linux發(fā)行版系統(tǒng),比BusyBox功能更完善,大小不到5MB,是官網(wǎng)推薦的基礎(chǔ)鏡像,由于其包含了足夠的基礎(chǔ)功能和體積較小,在生產(chǎn)環(huán)境中最常用;
  • Debian/Ubuntu:Debian系列操作系統(tǒng),功能完善,大小約170MB,適合研發(fā)環(huán)境;
  • CentOS/Fedora:都是基于Redhat的Linux發(fā)行版,企業(yè)級服務(wù)器常用操作系統(tǒng),穩(wěn)定性高,大小約200MB,適合生產(chǎn)環(huán)境使用。

8. Docker持久化存儲

根據(jù)前面介紹的容器UnionFS寫實復(fù)制的特點,可知在容器里增加、刪除或修改文件,其實都是對可寫層里的文件副本進行了操作。在容器關(guān)閉后,該可寫層也會被刪除,對容器的所有修改都會失效,因此需要解決容器內(nèi)文件持久化的問題。Docker提供了兩種方案來實現(xiàn):

把宿主機文件系統(tǒng)里的目錄映射到容器內(nèi)的目錄,如下圖所示。如此一來,容器內(nèi)在該目錄里創(chuàng)建的所有文件,都存儲到宿主機的對應(yīng)目錄中,在關(guān)閉容器后,宿主機的目錄依然存在,再次啟動容器時還能讀取到之前創(chuàng)建的文件,因此實現(xiàn)了容器的文件持久化。

當然同時要明白,如果是對鏡像自帶文件進行了修改,由于鏡像是只讀的,該修改操作無法在關(guān)閉容器時保存下來,除非在修改了文件后構(gòu)建一個新的鏡像。 

技術(shù)選型之Docker容器引擎

把多臺宿主機的磁盤目錄通過網(wǎng)絡(luò)聯(lián)合為共享存儲,然后把共享存儲中的特定目錄映射給特定的容器,如下圖所示。這樣容器在重啟時,還是能讀取到關(guān)閉前創(chuàng)建的文件。生產(chǎn)環(huán)境中常用NFS作為共享存儲方案。 

技術(shù)選型之Docker容器引擎

9. Docker鏡像制作方法

鏡像制作方法有兩種:

(1)通過正在運行的容器生成新鏡像 

技術(shù)選型之Docker容器引擎

當一個容器在運行時,在里面所有的修改都會體現(xiàn)在容器的可寫層,Docker提供了commit命令,可以把正在運行的容器,疊加上可寫層的修改內(nèi)容,生成一個新鏡像。

如上圖所示,在容器里新安裝Spark組件的,如果關(guān)閉容器,Spark組件會隨著可寫層的消失而消失,如果在關(guān)閉容器之前使用commit命令生成新鏡像,那么使用新鏡像啟動為容器時,容器里就會包含Spark組件。

這種方式比較簡單,但無法直觀的設(shè)置環(huán)境變量、監(jiān)聽端口等內(nèi)容,適合在簡單使用的場景運用。

(2)通過Dockerfile文件來生成新鏡像 

技術(shù)選型之Docker容器引擎

Dockerfile是一個定義了鏡像創(chuàng)建步驟的文件,Docker引擎通過build命令讀取Dockerfile,按定義的步驟來一步步構(gòu)造鏡像。在研發(fā)和實施環(huán)境中,通過Dockerfile 創(chuàng)建容器是主流做法。

下面是一個Dockerfile的例子: 

技術(shù)選型之Docker容器引擎

Docker引擎可以根據(jù)以上Dockerfile定義的步驟,構(gòu)造出一個帶有ssh服務(wù)的Ubuntu鏡像。

10. Docker的使用場景

Docker作為一種輕量級的虛擬化方案,應(yīng)用場景十分豐富,下面收集了一些常見的場景:

作為輕量級虛擬機使用

可以使用Ubuntu等系統(tǒng)鏡像創(chuàng)建容器,當作虛擬機來使用,相比于傳統(tǒng)虛擬機,啟動速度更快,資源占用更少,單機可以啟動大量的操作系統(tǒng)容器,方便進行各種測試;

作為云主機使用

結(jié)合Kubernetes這樣的容器管理系統(tǒng),可以在大量服務(wù)器上動態(tài)分配和管理容器,在公司內(nèi)部,甚至可以取代VMWare這樣的虛擬機管理平臺,使用Docker容器作為云主機使用;

應(yīng)用服務(wù)打包

在Web應(yīng)用服務(wù)開發(fā)場景,可以把Java運行環(huán)境、Tomcat服務(wù)器打包為一個基礎(chǔ)鏡像,在修改了代碼包后加入到基礎(chǔ)鏡像來構(gòu)建一個新的鏡像,能很方便的升級服務(wù)和控制版本;

容器云平臺CaaS

Docker的出現(xiàn),使得很多云平臺供應(yīng)商開始提供容器云的服務(wù),簡稱容器即服務(wù)CaaS,以下對比一下IaaS、PaaS和SaaS:

IaaS(基礎(chǔ)設(shè)施即服務(wù)):提供虛擬機或者其他基礎(chǔ)資源作為服務(wù)提供給用戶。用戶可以從供應(yīng)商那里獲得虛擬機或者存儲等資源來裝載相關(guān)的應(yīng)用,同時這些基礎(chǔ)設(shè)施的繁瑣的管理工作將由IaaS供應(yīng)商來處理。其主要的用戶是企業(yè)的系統(tǒng)管理員和運維人員;

PaaS(平臺即服務(wù)):把開發(fā)平臺作為服務(wù)提供給用戶。用戶可以在一個包括SDK,文檔和測試環(huán)境等在內(nèi)的開發(fā)平臺上非常方便地編寫應(yīng)用,而且不論是在部署,或者在運行的時候,用戶都無需為服務(wù)器、操作系統(tǒng)、網(wǎng)絡(luò)和存儲等資源的管理操心,這些繁瑣的工作都由PaaS供應(yīng)商負責處理。其主要的用戶是企業(yè)開發(fā)人員。

SaaS(軟件即服務(wù)):將應(yīng)用作為服務(wù)提供給客戶。用戶只要接上網(wǎng)絡(luò),并通過瀏覽器,就能直接使用在云端上運行的應(yīng)用,而不需要顧慮類似安裝等瑣事,并且免去初期高昂的軟硬件投入。SaaS主要面對的是普通的用戶。

CaaS(容器即服務(wù)):完成IaaS和PaaS兩個層級的功能。相對于傳統(tǒng)的IaaS和PaaS服務(wù),CaaS對底層的支持比PaaS更靈活,而對上層應(yīng)用的操控又比IaaS更容易。同時因為Docker是比VM更細粒度的虛擬化服務(wù),所以能夠?qū)τ嬎阗Y源做到更高效的利用。CaaS可以部署在任何物理機,虛擬機或IaaS云之上。

持續(xù)集成和持續(xù)部署

互聯(lián)網(wǎng)行業(yè)提倡敏捷開發(fā),持續(xù)集成部署CI/CD便是最典型的開發(fā)模式。使用Docker容器云平臺,就能實現(xiàn)從代碼編寫完成推送到Git/SVN后,自動觸發(fā)后端CaaS平臺將代碼下載、編譯并構(gòu)建成測試Docker鏡像,再替換測試環(huán)境容器服務(wù),自動在Jenkins或者Hudson中運行單元/集成測試,測試通過后,馬上就能自動將新版本鏡像更新到線上,完成服務(wù)升級。整個過程全自動化,一氣呵成,最大程度地簡化了運維,而且保證線上、線下環(huán)境完全一致,而且線上服務(wù)版本與Git/SVN發(fā)布分支也實現(xiàn)統(tǒng)一。

解決微服務(wù)架構(gòu)的實施難題

基于Spring Cloud這樣的微服務(wù)框架,能夠?qū)崿F(xiàn)微服務(wù)的管理,但微服務(wù)本身還是需要運行在操作系統(tǒng)上。一個采用微服務(wù)架構(gòu)開發(fā)的應(yīng)用中,微服務(wù)的個數(shù)往往很多,這就導(dǎo)致了一臺服務(wù)器上往往需要啟動多個微服務(wù)來提高資源的利用率,而微服務(wù)本身可能就只能兼容部分操作系統(tǒng)。

這就導(dǎo)致了就算有大量的服務(wù)器資源(操作系統(tǒng)可能不一樣),但由于微服務(wù)本身與操作系統(tǒng)可能相關(guān),就不能做到讓微服務(wù)在任意服務(wù)器上運行,這就帶來了資源的浪費和運維的困難。利用Docker容器的環(huán)境隔離能力,讓微服務(wù)運行在容器內(nèi),就能夠解決以上所說的問題。

執(zhí)行臨時任務(wù)

有時候用戶只是想執(zhí)行一次性的任務(wù),但如果用傳統(tǒng)虛擬機的方式就要搭建環(huán)境,執(zhí)行完任務(wù)后還要釋放資源,比較麻煩。使用Docker容器就可以構(gòu)建臨時的運行環(huán)境,執(zhí)行完任務(wù)后關(guān)閉容器即可,方便快捷。

多租戶環(huán)境

利用Docker的環(huán)境隔離能力,可以為不同的租戶提供獨占的容器,實現(xiàn)簡單而且成本較低。

11. 總結(jié)

Docker的技術(shù)并不神秘,只是整合了前人積累的各種成果實現(xiàn)的應(yīng)用級的容器化技術(shù),它利用各種Linux發(fā)行版中使用了版本兼容的內(nèi)核容器化技術(shù),來實現(xiàn)鏡像一次構(gòu)建到處運行的效果,并且利用了容器內(nèi)的基礎(chǔ)操作系統(tǒng)鏡像層,屏蔽了實際運行環(huán)境的操作系統(tǒng)差異,使用戶在開發(fā)應(yīng)用程序時,只需確保在選定的操作系統(tǒng)和內(nèi)核版本上能正確運行即可,幾乎不需要關(guān)心實際的運行環(huán)境的系統(tǒng)差異,大大提高效率和兼容性。

但隨著容器運行得越來越多,容器管理將會稱為另一個運維的難題,這時候就需要引入Kubernetes、Mesos或Swarm這些容器管理系統(tǒng),后面有機會再介紹這些技術(shù)。

 

責任編輯:武曉燕 來源: Segmentfault
相關(guān)推薦

2012-02-13 16:00:35

內(nèi)網(wǎng)安全技術(shù)選型安全產(chǎn)品

2016-10-21 15:58:51

容器容器技術(shù)Docker

2013-04-18 11:01:10

手機游戲手機游戲引擎技術(shù)選型

2022-03-10 08:24:17

Docker容器SaaS

2020-10-19 09:32:49

容器Docker管理

2020-10-26 15:11:50

Docker容器IT

2023-11-23 16:49:56

容器PodmanDocker

2014-12-12 11:29:02

DockerLinux

2014-11-20 10:55:47

Docker容器技術(shù)虛擬化

2023-12-14 15:51:15

2020-06-17 15:44:47

技術(shù)研發(fā)架構(gòu)

2022-04-15 15:03:42

云計算容器Linux

2013-06-13 15:28:15

手機游戲引擎選型cocos2d-x

2019-07-11 15:25:02

架構(gòu)運維技術(shù)

2020-12-10 06:46:40

容器云平臺

2019-11-13 14:43:12

容器云平臺軟件

2014-11-06 10:18:10

googleDocker

2020-10-27 10:52:37

Docker容器存儲

2015-05-27 09:08:26

容器云平臺Daocloud

2015-05-27 09:13:15

DaoCloudDocker容器
點贊
收藏

51CTO技術(shù)棧公眾號

欧洲精品久久一区二区| 久久久99精品| 亚洲综合资源| 亚洲最大成人网4388xx| 久久精品aaaaaa毛片| 精品国产青草久久久久96| 99久久夜色精品国产亚洲96 | 日韩欧美国产片| 91精品久久| 久久免费午夜影院| 亚洲iv一区二区三区| 国产精品视频久久久久久久| 久久在线免费| 亚洲女人初尝黑人巨大| 两性午夜免费视频| 国产成人精品123区免费视频| 亚洲色图制服诱惑| 日韩精品一区二区三区丰满| 国产91免费在线观看| 麻豆专区一区二区三区四区五区| 久久久久久久亚洲精品| 午夜成人亚洲理伦片在线观看| 欧美一区二区三区久久| 日韩欧美国产一区二区在线播放| 粗暴91大变态调教| 91桃色在线观看| 日韩理论片中文av| 午夜视频久久久| 色综合成人av| av在线这里只有精品| 亚洲a级在线观看| 波多野结衣一区二区在线| 亚洲精品韩国| 久久久久久久久91| 好吊色视频在线观看| 成人高清电影网站| 亚洲天堂av在线播放| 性囗交免费视频观看| 午夜免费欧美电影| 91精品国产高清一区二区三区蜜臀| 免费日韩视频在线观看| 国产伦子伦对白在线播放观看| 亚洲精品视频免费观看| 中文字幕久久综合| 麻豆视频网站在线观看| 国产精品久久久久婷婷二区次| 欧美一级片免费观看| 欧洲一区av| 91麻豆高清视频| 久久久久久久久一区二区| 无码国产精品一区二区色情男同| 国产成人精品免费| aa成人免费视频| 亚洲春色一区二区三区| 国产盗摄精品一区二区三区在线| 亚洲综合小说区| www.桃色av嫩草.com| 懂色av一区二区三区免费观看| 亚洲综合在线小说| 亚洲乱码精品久久久久..| 国产98色在线|日韩| 国产精品美女xx| 五月婷婷激情在线| 久久久久国产精品厨房| 亚洲激情一区二区| 国产在线69| 亚洲一区二区欧美日韩| 久久精品国产sm调教网站演员| √8天堂资源地址中文在线| 午夜精品久久久| 成人免费观看视频在线观看| 日韩精品一区二区三区| 欧美色老头old∨ideo| 亚洲男人天堂av在线| 麻豆视频久久| 日韩www在线| 永久免费av无码网站性色av| 国产精品成人av| 欧美丰满少妇xxxxx做受| 国产一区二区三区影院| 免费av成人在线| 亚洲一区二区在线| 奇米影视888狠狠狠777不卡| 国产精品国产精品国产专区不蜜 | 污污片在线免费视频| 五月婷婷另类国产| 91制片厂毛片| 99ri日韩精品视频| 亚洲人在线视频| 国产极品国产极品| 麻豆91精品| 91亚洲精品在线| 欧美日韩在线中文字幕| 国产精品高潮呻吟久久| 男女啪啪免费视频网站| 久久伊人国产| 亚洲精品电影在线| www.97视频| 久久精品午夜| 99porn视频在线| www.91在线| 亚洲6080在线| www.午夜av| 久久91成人| 欧美交受高潮1| 国产精品无码一区| av电影天堂一区二区在线| 国产免费色视频| 久久青青视频| 精品久久久久久久久久久久包黑料| 熟女少妇内射日韩亚洲| 精品动漫3d一区二区三区免费| 国产精品久久久久久av| 日本黄色三级视频| 综合欧美亚洲日本| 久久久久免费精品| 开心激情综合| 欧美多人爱爱视频网站| 一区二区www| 国产亚洲精品免费| 欧美精品一区免费| 99国产精品久久一区二区三区| 色yeye香蕉凹凸一区二区av| 亚洲欧美自拍视频| 成人福利电影精品一区二区在线观看| 一本久道久久综合狠狠爱亚洲精品| 色黄视频在线观看| 精品国产乱码久久久久久老虎| 影音先锋男人资源在线观看| 男人的天堂亚洲| 久久影院理伦片| sqte在线播放| 精品国产一区二区精华| 午夜免费激情视频| 国产在线一区二区| 在线视频欧美一区| 亚洲aⅴ网站| 视频在线一区二区| 一区二区不卡视频在线观看| 欧美国产视频在线| 日韩中文字幕二区| 国产亚洲欧美日韩在线观看一区二区| 97视频在线观看视频免费视频| 亚洲精品一区二区三区蜜桃| 夜夜爽夜夜爽精品视频| 欧美一区二区三区影院| 亚洲蜜桃视频| 91视频在线免费观看| av免费在线观看网站| 欧美一区在线视频| 国产极品国产极品| 成人精品国产免费网站| 91成人在线观看喷潮教学| 精品欧美午夜寂寞影院| 97超级碰在线看视频免费在线看| 午夜福利一区二区三区| 精品国产91久久久久久老师| 国产精品无码电影| 久久综合网络一区二区| 亚洲精品成人a8198a| 久久精品资源| 久久综合色影院| 亚洲成人久久精品| 欧美性videos高清精品| 中文字幕人妻一区二区三区在线视频| 丝袜国产日韩另类美女| 中文字幕av日韩精品| 亚洲精品影片| 孩xxxx性bbbb欧美| 国产二区视频在线观看| 91精品视频网| 日韩免费视频网站| 国产色一区二区| www.污网站| 国产日韩欧美一区在线| 日本中文不卡| 日本一区二区三区播放| 97碰在线观看| 一级毛片视频在线观看| 日韩精品专区在线影院观看| 五月天综合激情| 中文字幕精品一区二区三区精品| 日本一二三区在线| 先锋影音久久久| 亚洲欧美国产精品桃花| 日本一区二区乱| 国产成人久久精品| 超碰人人在线| 亚洲欧美在线免费观看| 国产精品永久久久久久久久久| 亚洲高清在线视频| 91ts人妖另类精品系列| 白白色 亚洲乱淫| 九九精品久久久| 99精品国产一区二区青青牛奶| 亚洲ai欧洲av| 九九热hot精品视频在线播放 | 怡红院男人天堂| 亚洲一区二区综合| 日本一道本视频| www.亚洲人| 国内av一区二区| 久久久噜噜噜久久狠狠50岁| 国风产精品一区二区| 国产成人精品免费视| 99视频在线| 亚洲欧美久久精品| 国产精品18久久久久久首页狼| 日韩另类在线| 色妞欧美日韩在线| 日av在线播放| 亚洲第一区中文99精品| 国产精品丝袜黑色高跟鞋| 欧美性生交大片免网| 久久久久亚洲av成人片| 国产精品国产三级国产普通话蜜臀| 欧美 日本 国产| 成人午夜精品在线| 亚洲男人天堂2021| 久久99最新地址| 人妻丰满熟妇av无码区app| 亚洲深夜激情| 日韩精品在线中文字幕| 亚洲综合专区| 福利网在线观看| 99精品视频精品精品视频| 日本不卡二区高清三区| 亚洲色图丝袜| 精品国产91亚洲一区二区三区www| 国产免费av国片精品草莓男男| 国产精品日韩欧美大师| 欧美xxxx做受欧美护士| 日韩av男人的天堂| 伊人久久综合一区二区| 91精品国产色综合久久不卡98口 | 久久无码专区国产精品s| 国产一区欧美二区| 亚洲精品手机在线观看| 蜜桃视频在线一区| 日日躁夜夜躁aaaabbbb| 免费精品视频在线| 日本久久久久久久久久久久| 欧美aaaaaa午夜精品| 九九热免费精品视频| 日本欧美在线观看| 亚洲色精品三区二区一区| 视频精品一区二区| 色悠悠久久综合网| 奇米精品一区二区三区在线观看 | 91在线视频播放| 国产精品无码在线| 91毛片在线观看| 亚洲最大成人网站| 国产人伦精品一区二区| 日本在线观看网址| 日韩美女视频19| 妺妺窝人体色www聚色窝仙踪 | 国产欧美日韩视频在线观看| 欧美熟妇一区二区| 日本一区免费视频| 日本一二三区在线观看| 亚洲精品视频一区二区| 日韩免费一级片| 欧美综合天天夜夜久久| 一区二区不卡视频在线观看| 日韩一区二区三区视频| 老牛影视av牛牛影视av| 亚洲电影av在线| 毛片网站在线观看| 久久伊人色综合| 999福利在线视频| 国产www精品| 91精品国产一区二区在线观看| 亚洲自拍小视频| 亚洲第一福利社区| 中文字幕一区二区三区在线乱码| 一区二区在线影院| 国产肥臀一区二区福利视频| 蜜桃久久av一区| 大尺度在线观看| 欧美激情一区在线观看| 九九热国产精品视频| 欧美性极品xxxx娇小| 一起草av在线| 亚洲精品国产精品国产自| 91涩漫在线观看| 久久久久在线观看| 嫩草伊人久久精品少妇av杨幂| 99一区二区| 欧美精美视频| 男人添女人下部视频免费| 午夜综合激情| 午夜视频在线免费看| 国产区在线观看成人精品| 69av.com| 欧美午夜精品电影| 天堂在线资源库| 中文字幕亚洲激情| free性护士videos欧美| 成人黄色在线免费| 亚洲传媒在线| 久草视频国产在线| 激情深爱一区二区| 亚洲熟妇无码av| 亚洲午夜激情网站| 一级aaaa毛片| 青青草成人在线观看| 欧美精品一区二区不卡| 亚洲欧美一区二区三| 欧美成人手机在线| 成人国产一区| 欧美午夜精品久久久久免费视| 欧美88av| 色91精品久久久久久久久| 久久久久久久久99精品| 精品无码久久久久| 91精品欧美久久久久久动漫| 91在线不卡| 国产精品成人v| 免费不卡中文字幕在线| 久久精品无码中文字幕| 国产精品伊人色| 91n在线视频| 欧美视频在线播放| 国产三级在线| 日韩av观看网址| 在线观看欧美理论a影院| 国产v片免费观看| 成人av在线一区二区三区| 久久精品99国产精| 日韩欧美国产系列| 亚洲第一图区| av资源站久久亚洲| 国产一区二区三区四区老人| 国产又粗又猛大又黄又爽| 日韩毛片一二三区| 国产又粗又长又大视频| 日韩中文字幕在线观看| 国产精品美女午夜爽爽| 亚洲成人自拍视频| 美女脱光内衣内裤视频久久影院| 69精品无码成人久久久久久| 色欧美88888久久久久久影院| 天堂成人在线| 国产成人精品免费久久久久| 免费成人网www| 免费激情视频在线观看| 国产日韩在线不卡| 在线观看不卡的av| 久久精品青青大伊人av| 亚洲青青一区| 男女裸体影院高潮| 成人在线综合网站| 国产www在线| 国产亚洲精品综合一区91| 福利精品在线| 日韩精品一区二区三区电影| 国产精品亚洲第一区在线暖暖韩国 | 欧美高清69hd| 久久精品国产综合| 超碰成人福利| 北条麻妃69av| 国产精品卡一卡二卡三| av网站在线免费看| 国模极品一区二区三区| 亚欧日韩另类中文欧美| 91国产精品视频在线观看| 亚洲人成在线观看一区二区| 亚洲欧美黄色片| 青草青草久热精品视频在线观看| 欧美日韩国产在线观看网站| 一级黄色高清视频| 亚洲大尺度视频在线观看| 狠狠色伊人亚洲综合网站l| 国产日韩精品在线观看| 欧美视频日韩| 日本二区在线观看| 欧美一区二区三区四区在线观看| av最新在线| 一区二区三区|亚洲午夜| 成人国产亚洲欧美成人综合网| 五月天婷婷导航| 久久成年人免费电影| 西瓜成人精品人成网站| gogogo高清免费观看在线视频| 亚洲一区二区三区四区在线免费观看| 亚洲欧洲成人在线| 亚洲www在线观看| 石原莉奈在线亚洲二区| 久久精品国产av一区二区三区| 亚洲日韩欧美视频| 日本在线成人| 538任你躁在线精品免费| 亚洲v日本v欧美v久久精品| www.亚洲资源| 国产美女精品在线观看| 看电视剧不卡顿的网站| 国产专区第一页| 九色精品免费永久在线| 欧美亚洲在线日韩|