- Nuclio實戰及源碼分析:基于Kubernetes的Serverless FaaS平臺
- 李彬 詹煜卓 任勝寒 張晨編著
- 1381字
- 2024-08-06 16:59:56
1.3.1 應用容器引擎——Docker
Docker最初是DotCloud公司創始人Solomon Hykes發起的一個公司內部項目。它是基于DotCloud公司多年云服務技術的一次革新,于2013年3月以Apache 2.0授權協議開源,主要項目代碼在GitHub上進行維護。
Docker是一個用于開發、發布和運行應用程序的開放平臺。Docker將應用程序與基礎架構分離,可以快速交付軟件。使用Docker可以像管理應用程序一樣管理基礎設施。通過利用Docker快速交付、測試和部署代碼的方法,可以縮短開發、測試和生產的周期。
(1)Docker平臺
Docker提供了在容器的松散隔離環境中打包和運行應用程序的能力。隔離和安全性允許在給定的主機上同時運行多個容器。容器是輕量級的,包含運行應用程序所需的所有內容,因此不需要依賴于當前安裝在主機上的內容。可以輕松地在工作時共享容器,并確保與共享的每個人都獲得以相同方式工作的相同容器。
Docker提供了管理容器生命周期的工具和平臺。
1)使用容器開發應用程序及其支持組件。
2)容器成為分發和測試應用程序的單元。
準備好后,將應用程序作為容器或編排好的服務部署到生產環境中。無論生產環境是本地數據中心、云提供商還是這兩者的混合體,其工作原理都是一樣的。
(2)Docker的優勢
1)快速、一致地交付應用程序。Docker通過提供應用程序和服務的本地容器在標準化環境中工作,從而縮短了開發生命周期。容器非常適合于持續集成和持續交付(CI/CD)工作流。
考慮下面的場景:
開發人員在本地編寫代碼,并使用Docker與同事共享這些代碼。
使用Docker將應用程序部署到測試環境,并執行自動或手動測試。
當開發人員發現錯誤時,他們可以在開發環境中修復它們,并將它們重新部署到測試環境中進行測試和驗證。
當測試完成后,向客戶提供修復就像將更新后的鏡像部署到生產環境一樣簡單。
2)響應性部署和擴展。Docker支持高度可移植的工作負載。Docker可以運行在開發人員的本地筆記本計算機、數據中心的物理機或虛擬機、云提供商等多種環境中。
Docker的可移植性和輕量級特性也使得它能夠很容易地實時動態管理工作負載,根據業務需要擴展或拆分應用程序和服務。
3)在同一硬件上運行更多的工作負載。Docker的體積小、速度快。它為基于虛擬機管理程序的平臺提供了一個可行的、具有成本效益的替代方案,可以使用更多的計算能力來實現業務目標。Docker非常適用于高密度環境和中小型部署業務,在這些環境中,需要使用更少的資源來完成更多的任務。
(3)Docker的架構
Docker使用客戶端-服務器架構。Docker客戶端(Client)與Docker守護進程(Docker daemon)進行對話,后者負責構建、運行和分發Docker容器(Container)的繁重工作。Docker客戶端和守護進程可以在同一個系統上運行,或者可以將Docker客戶端連接到遠程Docker守護進程。Docker客戶端和守護進程使用REST API、UNIX套接字或網絡接口進行通信。Docker架構如圖1-3所示。
1)Docker守護進程。Docker守護進程監聽Docker API請求并管理Docker對象,例如鏡像、容器、網絡和卷。守護進程還可以與其他守護進程通信以管理Docker服務。
2)Docker客戶端。Docker客戶端是Docker用戶與Docker交互的主要方式。當用戶使用docker命令時,客戶端會將這些命令發送給守護進程,守護進程會執行這些命令。docker命令可以通過調用Docker API與多個守護進程通信。Docker客戶端也可以與多個守護進程通信。

圖1-3 Docker的架構
3)Docker倉庫。Docker倉庫存儲Docker鏡像。Docker Hub是一個任何人都可以使用的公共倉庫,并且Docker的默認配置為在Docker Hub中查找鏡像。可以搭建和運行自己的私有倉庫。
當使用docker pull(拉取鏡像)或docker run(運行鏡像)命令時,將從配置的倉庫中提取所需的鏡像。當使用docker push(推送鏡像)命令時,鏡像會被推送到配置的倉庫中。
- Web應用系統開發實踐(C#)
- GeoServer Cookbook
- Effective C#:改善C#代碼的50個有效方法(原書第3版)
- UI智能化與前端智能化:工程技術、實現方法與編程思想
- Serverless架構
- Working with Odoo
- Python深度學習:基于TensorFlow
- 學習OpenCV 4:基于Python的算法實戰
- Learning Hadoop 2
- 30天學通C#項目案例開發
- Secret Recipes of the Python Ninja
- Learning C++ by Creating Games with UE4
- Three.js權威指南:在網頁上創建3D圖形和動畫的方法與實踐(原書第4版)
- Keil Cx51 V7.0單片機高級語言編程與μVision2應用實踐
- 深入理解Zabbix監控系統