亚洲天堂av网_久久精品欧美一区二区三区不卡_亚洲欧美一级_欧美成人合集magnet

知名百科  > 所屬分類  >  其他科技   

Docker

Docker是一個用于開發(fā)、發(fā)布和運行應用程序的開源應用程序容器引擎。它可以幫助開發(fā)者在不同的環(huán)境下快速、簡單、可移植地開發(fā)應用程序。Docker最初由Docker公司開發(fā),于2013年發(fā)布。Docker是基于流程容器的輕量級虛擬容器解決方案,構建于LXC(Linux容器)之上。Docker使開發(fā)人員能夠將他們的應用程序和依賴包打包到一個可移植的容器中,然后發(fā)布到任何流行的Linux或Windows機器上。與傳統(tǒng)虛擬機相比,Docker具有重量輕、性能高、啟動速度快、資源占用少、可移植性好等優(yōu)點。

目錄

發(fā)展歷史 編輯本段

起源階段

(2008-2013年)

2008年,所羅門·海克斯(Solomon Hykes)、卡邁勒·富納迪(Kamel Founadi)和塞巴斯蒂安·帕爾(Sebastien Pahl)在巴黎創(chuàng)立了一家名為DotCloud的初創(chuàng)公司,旨在為軟件開發(fā)者提供云托管服務。在接下來的幾年里,Hykes領導了基于容器的工具的開發(fā),以幫助DotCloud加速和擴展其運營。

2013年,Hykes推出了工具Docker,并將其作為開源軟件發(fā)布,供任何人下載、使用和修改。

2014年,Docker公司發(fā)布了Docker 1.0版本,引入了映像和容器的概念,并提供了一整套命令行工具和API。同年3月,亞馬遜宣布在其彈性豆莖產(chǎn)品中加入Docker支持。同年6月,Google開放了一個容器節(jié)點管理器,根據(jù)YAML列表管理一組Docker容器。同年8月,Red Hat發(fā)布了運行Docker容器的原型系統(tǒng)Project Atomic。

發(fā)展階段

(2014-2016年)

2015年,Docker推出了Docker Compose和Docker Swarm。Docker Compose用于定義和管理多容器應用程序,而Docker Swarm是Docker的集群管理和編排工具。同年,Docker宣布成立一個新的非營利組織——Docker開放容器倡議(OCI ),以促進Docker的開放標準化和互操作性。OCI不僅包括Docker,還包括紅帽、谷歌、IBM等眾多知名公司。

2016年,Docker推出了Docker for Mac和Docker for Windows,為開發(fā)者提供了在本地環(huán)境下運行和測試Docker容器的工具。同年9月,微軟在亞特蘭大舉行的Ignite大會上宣布全面推出Windows Server 2016。Windows 2016推出了容器功能,Windows Server 2016上的容器由Docker支持。

商業(yè)化階段

(2017年至今)

2017年,Docker公司推出Docker企業(yè)版(Docker EE),為企業(yè)用戶提供更加穩(wěn)定可靠的容器服務。同年10月,在DockerCon EU 2017上,Docker宣布Docker引擎工具將支持Kubernetes。

2020年,Docker發(fā)布了Docker CLI的改進版本,引入了實驗功能和命令,并提供了更強大、更靈活的命令行界面。

2021年,Docker公司公布了新的產(chǎn)品訂閱策略,將產(chǎn)品訂閱分為四個等級,分別是個人免費、專業(yè)付費版、團隊付費版和商務付費版。對于員工超過250人或年收入超過1000萬美元的公司,必須使用付費訂閱模式。

系統(tǒng)結構 編輯本段

Docker采用客戶端-服務器架構,Docker客戶端與Docker守護進程通信,完成Docker的功能。客戶端用來發(fā)送操作指令,守護進程負責構建、運行和分發(fā)Docker容器。Docker客戶端和守護進程可以運行在同一個系統(tǒng)上,也可以通過網(wǎng)絡連接到遠程Docker守護進程。客戶端和守護進程使用REST API通過UNIX套接字或網(wǎng)絡接口進行通信。此外,Docker還提供了Docker Compose作為另一個客戶端工具,可以處理由一組容器組成的應用。

Docker守護進程(docker守護進程):Docker daemon,又稱Docker引擎,是運行在主機上的后臺服務。它負責管理Docker對象(圖像、容器、網(wǎng)絡等。),接收Docker客戶端的命令并執(zhí)行相應的操作。Docker守護進程中還有一些重要的組件,比如Docker鏡像、Docker容器、Docker注冊表和數(shù)據(jù)量。

Docker圖像(docker圖像):Docker image是一種輕量級和可移植的打包格式,它包含運行應用程序所需的所有文件和配置。Docker映像可以由Dockerfile定義,也可以從Docker Hub等映像庫獲得。

DockerDocker

Docker容器:Docker容器是一個由Docker鏡像啟動的運行實例,它包含了應用程序和運行時所需的所有依賴關系。Docker容器是輕量級的,可以隨時啟動和停止,也有很好的隔離性和可移植性。

Docker registry:Docker registry是一個存儲Docker圖像的存儲庫。默認情況下,Docker官方提供了一個公共注冊表(Docker Hub),開發(fā)者可以從中獲取常用圖片。此外,您還可以建立一個私人Docker注冊表來存儲和共享您自己的圖像。

Volume:數(shù)據(jù)量是一種解決容器中持久數(shù)據(jù)問題的機制。在容器中,當容器被刪除時,容器內部生成的需要持久化的數(shù)據(jù)也會被刪除,從而導致數(shù)據(jù)的丟失。為了解決這個問題,可以使用數(shù)據(jù)卷將數(shù)據(jù)持久化到主機,實現(xiàn)容器和主機之間的數(shù)據(jù)共享。數(shù)據(jù)卷允許將主機上的目錄或文件與容器中的目錄進行映射。當容器中的應用程序從容器中的目錄讀寫數(shù)據(jù)時,相應的操作會同步到主機上的目錄,從而實現(xiàn)數(shù)據(jù)的持久化。例如,對于數(shù)據(jù)庫容器,數(shù)據(jù)可以存儲在主機上的實際磁盤中,以確保數(shù)據(jù)的持久性。

Docker客戶端:Docker客戶端是與Docker引擎交互的工具,它通過Docker API與Docker引擎進行通信。Docker客戶端可以運行在本地或遠程主機上,可以通過命令行界面或Docker API操作Docker引擎。Docker客戶端可以與多個Docker引擎通信。

實現(xiàn)原理 編輯本段

Linux下的核心實現(xiàn)原理

Docker使用Linux內核名稱空間、控件組和層能力來實現(xiàn)容器技術。名稱空間允許Docker隔離每個容器的進程ID和網(wǎng)絡等資源。控制組允許Docker限制容器的CPU和內存等計算資源。layer函數(shù)允許Docker在容器中構建一個輕量級的鏡像系統(tǒng),該系統(tǒng)由多個層組成。容器運行時環(huán)境負責管理每個容器的生命周期,可以根據(jù)鏡像系統(tǒng)創(chuàng)建和啟動容器,停止和刪除容器。

Windows下的核心實現(xiàn)原理

在Windows下,Docker使用Hyper-V虛擬化技術作為容器運行時的后端,結合Windows容器技術,實現(xiàn)容器隔離和高效運行。同時,引入計算服務提供的容器管理功能來管理容器。Hyper-V虛擬化技術在Windows中發(fā)揮著重要作用。它允許在主機上創(chuàng)建和管理虛擬機,每個虛擬機可以運行獨立的操作系統(tǒng)和應用程序。在Windows下,Docker使用Hyper-V作為容器運行時的后端。這意味著Docker容器實際上運行在Hyper-V虛擬機中,每個容器在自己的虛擬機中都有獨立的操作系統(tǒng)和文件系統(tǒng),從而實現(xiàn)隔離和安全。

Windows引入了Windows Server Container技術,這是一種輕量級的虛擬化形式。Windows容器允許多個容器共享同一個操作系統(tǒng)內核,但是在用戶空間中提供隔離。這種輕量級虛擬化技術使得容器的啟動和操作更加高效和快速。Windows容器可以提供與主機相同的API和文件系統(tǒng)視圖,這樣容器化的應用程序就可以在Windows環(huán)境中無縫運行。

計算服務是Windows提供的一個組件,用于管理容器的生命周期。它抽象了Windows操作系統(tǒng)提供的底層功能,如名稱空間、控件組和容器運行時。計算服務為管理操作(如創(chuàng)建、啟動、停止和刪除容器)提供了一個通用界面。它與Docker引擎和其他容器管理組件通信,以提供容器管理功能。

生態(tài)系統(tǒng) 編輯本段

Docker是一個強大的容器化平臺,它不僅是一種容器技術,還是一個生態(tài)系統(tǒng),包括許多相關的工具和服務,使Docker容器更容易使用和擴展。以下是Docker生態(tài)系統(tǒng)的一些主要組件和工具。

Docker Hub:Docker Hub是Docker的官方圖片倉庫,也是全球最大的容器圖片庫,開發(fā)者可以從中獲取所需圖片。Docker Hub還提供自動建造服務和私有倉庫等功能。

Docker撰寫:Docker Compose是一個部署工具,可以通過一個配置文件定義和運行多個Docker容器。使用Docker Compose,您可以快速構建和啟動復雜的多容器應用程序,如Web應用程序和數(shù)據(jù)庫應用程序。

Docker Swarm:Docker Swarm是Docker官方的集群管理工具,可以集群多個Docker主機,實現(xiàn)容器的高可用性和負載均衡。Docker Swarm還提供內置的服務發(fā)現(xiàn)和容器編排功能,可以輕松管理和擴展容器應用。

Docker Machine:Docker Machine是一款管理工具,通過它你可以在本地或云平臺上快速創(chuàng)建和管理Docker主機。使用Docker Machine可以簡化部署和管理Docker容器集群的過程,在開發(fā)和測試環(huán)境中使用Docker也很方便。

優(yōu)點缺點 編輯本段

優(yōu)勢

簡化開發(fā)生命周期:快速一致地交付應用程序:使用Docker容器,開發(fā)人員可以在標準化的環(huán)境中工作并快速交付應用程序。容器提供了一個隔離的運行環(huán)境,以確保應用程序在不同的開發(fā)環(huán)境中具有一致的行為。這簡化了開發(fā)過程,并使持續(xù)集成和持續(xù)交付(CI/CD)工作流更加順暢。

簡化開發(fā)和測試過程:開發(fā)人員可以在本地編寫代碼,并使用Docker容器與團隊成員共享他們的工作。使用Docker,他們可以輕松地將應用程序推入測試環(huán)境,進行自動化和手動測試。當發(fā)現(xiàn)問題時,開發(fā)人員可以在開發(fā)環(huán)境中修復bug,并將其重新部署到測試環(huán)境中進行驗證。

簡化生產(chǎn)環(huán)境的部署:一旦測試完成并通過驗證,使用Docker將更新后的映像推送到生產(chǎn)環(huán)境就非常簡單了。這使得修復問題和部署更新變得快速可靠,并減少了生產(chǎn)環(huán)境中的停機時間。

快速部署和擴展:Docker基于容器的平臺具有很高的可移植性,可以運行在各種環(huán)境中,比如開發(fā)者的本地機器、數(shù)據(jù)中心和云服務提供商。這使得動態(tài)管理工作負載變得非常容易,并且可以根據(jù)業(yè)務需求實時擴展或拆除應用和服務。

在相同硬件上運行更多工作負載:Docker的輕量級和高效率使得在相同的硬件上運行更多的工作負載成為可能。與傳統(tǒng)的基于虛擬機管理程序的虛擬機相比,Docker提供了更加經(jīng)濟高效的解決方案,可以在相同的服務器容量下實現(xiàn)更多的業(yè)務目標,適用于高密度環(huán)境和中小型部署。

劣勢

安全問題:集裝箱技術在集裝箱安全方面存在一些重要問題。集裝箱安全首次被列入Gartner十大安全項目,進一步證實了其在安全研究和應用中的普遍性。特別是隨著微服務架構和DevOps開發(fā)模式的流行,越來越多的開發(fā)者采用了容器技術。然而,作為一場新的技術革命,容器技術不僅面臨著傳統(tǒng)的主機安全問題,也帶來了新的安全威脅。Docker的安全問題主要在以下幾個方面。

逃避安全風險:Docker容器的逃逸安全風險包括配置危險、隔離不完善和內核漏洞。危險的配置可能讓攻擊者逃脫,不完善的隔離可能導致關鍵信息的泄露,內核漏洞可能讓攻擊者從容器中逃脫并訪問主機。

鏡像安全風險:鏡像是Docker容器的靜態(tài)表示,其安全性影響容器的運行時安全性。鏡像腳本的安全威脅可能導致容器中的漏洞或惡意利用,而鏡像漏洞的安全威脅涉及鏡像中軟件的CVE漏洞和惡意上傳的鏡像。

網(wǎng)絡安全風險:Docker容器網(wǎng)絡默認采用網(wǎng)橋連接,但是容器之間的通信是不過濾的,容易受到ARP欺騙和MAC flooding攻擊。惡意使用容器中的內核資源也可能影響其他容器的正常運行。

應用場景 編輯本段

Docker可以用來構建和管理開發(fā)環(huán)境,保證開發(fā)環(huán)境的一致性和可移植性。開發(fā)人員可以使用Docker容器在他們的本地環(huán)境中運行應用程序,而不會影響其他應用程序或主機。

Docker可以用來構建和管理測試環(huán)境,保證測試環(huán)境的一致性和可移植性。測試人員可以使用Docker容器在不同的環(huán)境中測試應用程序,無需任何修改。

Docker可用于支持持續(xù)集成和持續(xù)部署流程。開發(fā)人員可以使用Docker容器來構建和打包應用程序,而DevOps團隊可以使用Docker容器將應用程序部署到各種環(huán)境中。

Docker可以用來支持微服務架構,應用被分成幾個小服務,每個小服務運行在一個獨立的Docker容器中。這可以使應用程序更容易管理和擴展,還可以提高可用性和可靠性。

Docker可以用來支持多租戶應用,每個租戶可以運行在一個單獨的Docker容器中。這可以使應用程序更容易管理和隔離,還可以提高安全性和可靠性。

應用示例 編輯本段

AWS Amazon ECR和Amazon ECR Public:AWS客戶可以使用高可用性和高性能的容器組件注冊中心來處理他們的容器應用程序。通過使用Docker官方映像和Amazon ECR Public,AWS客戶可以獲得高可用性和快速下載的優(yōu)勢。

Datadog:不止Datadog:Datadog的應用程序運行在容器化的基礎設施上,Docker Hub是容器鏡像的主要來源。Datadog是公認的Docker認證發(fā)行商,它提供安全可靠的容器映像,用于監(jiān)控基礎設施和應用程序的性能。

VMware:VMware加入了Docker Verified Publisher計劃,使開發(fā)人員能夠通過容器訪問VMware提供的工件,并安全地采用他們的開源技術。特別是,VMware Tanzu的客戶可以從更廣泛的輔助服務中受益,快速啟動應用程序。

附件列表


0

詞條內容僅供參考,如果您需要解決具體問題
(尤其在法律、醫(yī)學等領域),建議您咨詢相關領域專業(yè)人士。

如果您認為本詞條還有待完善,請 編輯

上一篇 ArcGIS    下一篇 中間件

標簽

同義詞

暫無同義詞