云集技術(shù)學社|容器技術(shù)和Docker介紹

1月20日,深信服大云售前專家YJ在信服云《云集技術(shù)學社》系列直播課上進行了《容器技術(shù)和Docker介紹》的分享,詳細介紹了容器技術(shù)的發(fā)展、以Docker為代表的容器技術(shù)生態(tài)以及容器技術(shù)的應用場景。以下是他分享內(nèi)容摘要,想要了解更多可以關(guān)注“深信服科技”公眾號觀看直播回放。

看點一:容器和Docker發(fā)展歷史

容器技術(shù)發(fā)展是從上世紀70年代開始,在算力飛速發(fā)展的背景下,科學家圍繞著如何提高資源利用率進行研究,因此產(chǎn)生了最早的資源隔離技術(shù),如chroot。資源隔離技術(shù)持續(xù)發(fā)展到21世紀初期,Namespace、Cgroup等資源隔離技術(shù)加入Linux內(nèi)核,形成了內(nèi)核標準的LXC容器技術(shù)。

2010年前后,云計算逐步發(fā)展,共享經(jīng)濟和互聯(lián)網(wǎng)的趨勢越來越明顯,要求企業(yè)對客戶的需求能夠精準把控和快速滿足,因此出現(xiàn)了敏捷迭代。在敏捷迭代的場景下,如果每次都需要工程師重復地去規(guī)劃底層資源的隔離,配額,環(huán)境配置等,整體流程就無法實現(xiàn)敏捷。

基于這些背景,一個叫做Solomon Hykes的工程師提出了現(xiàn)代化容器的解決方案,他把這些技術(shù)整合到一個開箱即用的軟件中,并且加入了諸多如用戶友好的管理界面、規(guī)?;芾?、存儲格式等功能,這些能力如今都成為了容器的標準能力。

2014到2017年,Google等頭部廠商先后開源圍繞容器生態(tài)的解決方案,并試圖掌握技術(shù)主導權(quán),由此分化出CNCF和OCI等不同的技術(shù)組織和標準。

2018年后,CNCF主導的容器生態(tài)獲得巨大成功,驅(qū)動了容器技術(shù)為基礎(chǔ)的新一代PaaS的發(fā)展,孵化出了如應用開發(fā)運維能力(DevOps),應用架構(gòu)(微服務),無服務器架構(gòu)等領(lǐng)域的新方案。

以上就是容器技術(shù)大概的發(fā)展歷史。提起容器技術(shù)大家會聯(lián)想到Docker,其實容器技術(shù)并不特指Docker,但Docker在整個容器技術(shù)領(lǐng)域有著非常重要的作用,主要表現(xiàn)在三個方面:

一是Docker是容器技術(shù)的開創(chuàng)者,Docker在LXC的基礎(chǔ)上降低了容器技術(shù)使用的復雜度,提出了大規(guī)模使用的管理運維方案。開創(chuàng)性提出了鏡像文件實現(xiàn)了應用和運行環(huán)境的“一次封裝到處運行”,進而又推動技術(shù)的普及度。

二是Docker是容器技術(shù)的推廣者,DockerHub鏡像倉庫構(gòu)建了基于鏡像的開發(fā)者社區(qū)和生態(tài),讓全球開發(fā)者都參與到生態(tài)建設(shè)和分享中來,為容器技術(shù)的普及做出了極大貢獻,Docker也憑此獲得高速發(fā)展和領(lǐng)導者地位。

三是Docker是標準的推動者,Docker貢獻和領(lǐng)導了容器鏡像和運行時的OCI標準制定,加速了容器技術(shù)的發(fā)展。同時還貢獻了containerd,參與了CRI標準制定,推動了容器生態(tài)和組織的發(fā)展,最終達到工業(yè)級應用。

盡管近些年Docker在容器技術(shù)主導權(quán)的地位爭奪中發(fā)展不太樂觀,但Docker經(jīng)過十年經(jīng)營,在市場認知度、學習資源的完善度、客戶應用的成熟度等方面仍具有巨大優(yōu)勢,是了解容器發(fā)展歷史和技術(shù)的首推學習對象。

  看點二:Docker為代表的容器技術(shù)介紹

當談論Docker的時候,并不是談論單獨的產(chǎn)品,而是Docker公司針對容器技術(shù)、管理和生態(tài)的一整套解決方案。

云集技術(shù)學社|容器技術(shù)和Docker介紹

Docker由RunC、Containerd、Docker Engine、Docker Compose、Docker Swarm等部分組成:

RunC(low-level)是一個輕量級的工具,用來運行容器,也是標準化的產(chǎn)物,是在圍繞容器格式和對運行時制定的一個開放的工業(yè)化標準。

Containerd(high-level)是容器虛擬化技術(shù),從Docker中剝離出來,形成開放容器接口(OCI)標準的一部分,起到承上啟下的作用,對上接受命令參數(shù)的內(nèi)容,對下調(diào)用RunC實際的操作容器服務。

Docker Engine是執(zhí)行Docker標準的后臺應用程序(Dockerd),用來構(gòu)建鏡像,運行容器,管理網(wǎng)絡和存儲等。它的API不遵循CRI標準。任何第三方平臺與其集成必須開發(fā)對接其接口(Docker-shim)。

Docker Compose是基于YAML規(guī)范使用腳本來定義和簡化多容器部署的工具。Docker Swarm是Docker集群管理平臺。

Docker的核心概念是鏡像,鏡像含有啟動Docker容器所需的文件系統(tǒng)結(jié)構(gòu)及內(nèi)容??梢哉f,鏡像是Docker設(shè)計精巧的、引爆容器技術(shù)的核彈。

鏡像有五個特性:一是封裝,Docker鏡像將應用及其類庫,配置、環(huán)境等依賴全部打包緊耦合到一個文件實現(xiàn)應用遷移,讓應用到任意環(huán)境都可開箱并立即正常運行。

二是分層,Docker鏡像由基礎(chǔ)層(base image)和應用層構(gòu)成,而應用層可以根據(jù)對底層的依賴程度,抽象出不同的基礎(chǔ)層。

三是共享,基于分層文件系統(tǒng),不同的層可以被共享和依賴,使得鏡像通過標準API操作進行復制時,只需要獲取數(shù)據(jù)不同的層即可,不需要所有依賴都被復制(底層依賴已經(jīng)存在情況下,會通過層的UUID進行校驗)。

四是輕量,多個容器通過同一個鏡像創(chuàng)建時,不需要對鏡像進行復制(對比虛擬機),只需要將鏡像層掛載為只讀,然后再加上一個可讀寫層即可。

五是寫時復制,只有在可讀寫層的數(shù)據(jù)變化且需要保存寫入新的層的時候,Docker鏡像才會生成新的鏡像層。寫時復制與分層機制可以大大減少磁盤空間的占用和容器啟動時間。

Docker基于鏡像去創(chuàng)建容器的具體步驟是:首先將BaseImage內(nèi)容作為容器的rootfs以只讀方式掛載。然后Docker Daemon繼續(xù)解析鏡像的其它層,如ADD,ENV等信息,對容器的運行時環(huán)境進行初始化。初始化后Docker Daemon繼續(xù)解析鏡像文件,執(zhí)行CMD信息中的命令并執(zhí)行,使得容器進入運行態(tài)。

Docker在計算時會用到Namespace和Cgroup技術(shù),Docker會基于Namespace技術(shù)進行包括網(wǎng)絡、文件系統(tǒng)和環(huán)境等在內(nèi)的資源隔離。Linux Cgroup就是Linux內(nèi)核中用來為進程設(shè)置資源限制的一個重要功能,全稱是Linux Control Group,主要作用是限制一個進程能夠使用的資源上限,包括CPU、內(nèi)存、磁盤、網(wǎng)絡帶寬等等。

鏡像倉庫是用來存儲和分發(fā)容器鏡像的應用。企業(yè)和個人對產(chǎn)出的鏡像文件可以集中管理,便于進行權(quán)限控制、安全控制、能力共享、生態(tài)建設(shè)等。鏡像倉庫可以對基于容器鏡像的應用進行統(tǒng)一的版本,分發(fā)管理等。鏡像倉庫可以簡化和優(yōu)化企業(yè)基于容器的開發(fā)測試管理和集成,運維流程等(如CICD)。

看點三:容器其他重要概念與應用場景

除了容器技術(shù)生態(tài)外,容器還有著其他的重要概念。Docker和虛擬機都是資源隔離的方案。Docker是基于OS的資源隔離技術(shù),Docker Engine占用資源很少,物理機資源基本上被容器應用和物理機操作系統(tǒng)使用。虛擬機多了一層Guest OS(虛擬機操作系統(tǒng)),若一臺物理機上跑10臺虛擬機,則有10個Guest OS的資源損耗,Hypervisor層虛擬化,降低了虛擬機性能。

云集技術(shù)學社|容器技術(shù)和Docker介紹

容器安全也是現(xiàn)在一個比較重要的領(lǐng)域,目前容器安全主要注重四個方面,一是鏡像安全,如果使用了不安全的外部鏡像依賴,鏡像中有系統(tǒng)漏洞、缺陷,或者被惡意植入病毒和后門等,都會對容器造成較大威脅。二是容器逃逸,由于容器是基于OS共享的架構(gòu),如果攻擊者利用容器漏洞,獲取OS root權(quán)限,文件系統(tǒng)權(quán)限等,都會對整個系統(tǒng)造成極大危害。三是配置安全,即對容器引擎,鏡像倉庫,Kubernetes等沒有進行正確的權(quán)限配置等造成的入侵。四是漏洞管理,針對鏡像中的類庫文件漏洞,如apache log4j2漏洞,需要對鏡像文件進行及時識別和更新。

容器技術(shù)在深入到企業(yè)級應用時,還要有巨大的知識需要掌握,比如管理調(diào)度、大規(guī)模網(wǎng)絡的網(wǎng)絡性能、容器日志運行監(jiān)控等,這些都需要對相應的解決方案進行深入學習。另外,由于容器技術(shù)的特性和生態(tài)發(fā)展,云服務廠商也在普遍使用容器技術(shù)構(gòu)建企業(yè)級PaaS平臺。

容器的應用場景主要有六個:一是快速開發(fā),由于公有鏡像倉庫有著龐大的開源社區(qū)和開放的鏡像資源,可以讓開發(fā)者實現(xiàn)開箱即用。二是多云應用,因為容器與IaaS解耦以及容器本身輕量的特性讓容器更便于去做多云的遷移。三是應用隔離,在同一個服務器里需要運行多個應用時,可以使用容器去做運行環(huán)境和依賴的隔離。四是微服務架構(gòu),容器與微服務架構(gòu)輕量、敏捷彈性的特性適配。五是能力沉淀,利用容器技術(shù)可以將前期架構(gòu)的運行環(huán)境封裝起來,方便后來的技術(shù)人員開箱即用,這也是對企業(yè)能力的沉淀。六是持續(xù)集成和部署,容器可以保障開發(fā)測試環(huán)境的一致性,實現(xiàn)快速迭代和部署。

以上就是本次直播的主要內(nèi)容。對云計算感興趣的IT朋友可以關(guān)注“深信服科技”公眾號回顧往期,了解更多云計算知識。

(免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關(guān)資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )