CodeGym /Adesua ahorow /Docker SELF /Docker:出現的歷史和主要概念

Docker:出現的歷史和主要概念

Docker SELF
等級 9 , 課堂 0
開放

1.1 Docker 的出現歷史

早期年代和背景故事:

Docker 的歷史早在 2013 年官方誕生之前就已經開始了。在 2000 年代初期,虛擬化已非常流行,但傳統虛擬機需要大量資源且不夠靈活。就是在那個時候,容器化(containerization)的概念誕生了。LXC (Linux Containers) 成為最早允許利用 Linux 核心功能運行孤立容器的項目之一。

概念誕生:

Docker 是作為 dotCloud 公司內部項目的一部分出現的——一家由 Solomon Hykes 和 Sebastien Pahl 在 2010 年創立的初創公司。DotCloud 提供平臺即服務 (PaaS),為開發人員提供部署和管理 web 應用的工具。但當團隊在開發 dotCloud 時,遇到了應用隔離和依賴性管理的問題。於是,他們有了創建通用容器技術的想法,來解決這些問題。

開發與首次發布:

事實上,Docker 的前幾個版本是從 dotCloud 衍生而來的,其官方「父親」是 Solomon Hykes。Docker 首次於 2013 年 3 月的 PyCon 大會上宣布,隨後將其源代碼上傳至 GitHub。最初 Docker 使用 LXC (Linux Containers),但後來團隊開發了自己的容器實現,提高了系統性能和靈活性。

認可與社區增長:

Docker 很快引起了開發者和 IT 專家的注意。毫不意外,它的設置簡單,功能卻相當強大。在宣布後的幾個月內,該項目就在 GitHub 上獲得了大量 Star 並聚集了一個活躍的貢獻者社區。2014 年,dotCloud 公司更名為 Docker, Inc.,重點放在新的容器平臺的發展上。

Docker 歷史上的關鍵事件之一是它被大型 IT 市場公司認可。2014 年,Red Hat、Google 和 Microsoft 開始積極支持 Docker,將其整合到自己的產品和服務中。這推動了 Docker 的快速普及並鞏固了它作為容器化 事實標準 的地位。

合作夥伴和生態系統:

Docker 持續發展並吸引投資。在 2014 年,公司在 C 輪融資(C 輪是針對已取得一定成就並希望進一步增長的初創公司或企業的第三階段風險資本融資)中獲得了 4000 萬美元,使其能夠擴展團隊並加速開發。Docker 開始積極與其他公司合作,圍繞其平臺形成生態系統。推出的項目包括 Docker Compose(用於管理多容器應用)和 Docker Swarm(用於容器編排)。

2015 年,Docker 宣布與 Microsoft 建立戰略合作,將 Docker 整合到 Windows Server 和 Azure 中。這對於將容器技術傳播到 Linux 社區之外並使 Docker 對更廣泛的受眾可用來說是重要的一步。

競爭與標準化:

隨著 Docker 的普及,市場上出現了競爭項目和技術。2015 年,Google 推出了 Kubernetes —— 一個容器編排系統,憑藉靈活性和功能迅速流行。儘管存在競爭,Docker 和 Kubernetes 互相補充,形成了現代容器基礎設施的基礎。

2017 年,Docker 開始支持 Open Container Initiative (OCI) —— 一個針對容器格式及其運行時間的標準化項目。這確保了不同容器平臺之間的兼容性,簡化了 Docker 與其他工具的集成。

現狀與未來:

今天,Docker 仍然是開發者和系統管理員工具箱中 關鍵工具。其生態系統繼續增長,包括 Docker Desktop(用於在本地計算機上使用 Docker)和 Docker Hub(公共鏡像倉庫)項目。

Docker 積極開發安全性、性能和易用性技術。例如,Docker Content Trust 提供鏡像完整性和真實性檢查,而 Docker Scan 允許識別容器中的漏洞。

1.2 Docker 的主要概念

0. 虛擬的「虛擬機器」

從運行在 Docker 容器中的應用程式的角度來看,Docker 容器就是一個虛擬機器。但與普通虛擬機器不同,Docker 是個超輕量的系統。因為實際上它不是一個完整的虛擬機器,而是一個 虛擬的「虛擬機器」

Linux 操作系統允許將應用程式彼此隔離到那種程度,就像每個應用程式運行在它自己的操作系統上一樣。這種運行在真實操作系統上的獨特環境就是容器。

1. 隔離:

Docker 的關鍵特性之一就是能提供應用程式及其依賴的隔離。這是通過 Linux 核心中的 namespaces 和 cgroups 實現的。Namespaces 提供進程的隔離:每個容器都有自己的一組進程、網絡接口和文件系統。Cgroups 可以限制並控制每個容器的資源使用(CPU、內存和磁盤)。這種隔離使容器彼此獨立,也獨立於主機系統,從而提升了應用程式的安全性和可靠性。

2. 可攜性:

Docker 提供了高可攜性的應用程式。這意味著相同的容器可以在任何服務器上運行:開發者的本地計算機、測試環境或者雲平臺。所有運行環境,包括應用程式代碼、依賴項、庫和配置文件,都被打包進容器中。這消除了環境不兼容的問題,讓開發者可以確信他們的應用程式在任何環境中都能正常運行,無需更改。

3. 輕量化:

與需要為每個實例安裝獨立操作系統的虛擬機器不同,Docker 容器使用主機系統的核心。這使得容器更輕量化,啟動也更快。它們佔用的磁盤空間更小,消耗的內存也更少,這使得在一台服務器上可以運行更多的容器相比虛擬機器。

4. Docker 映像:

Docker 映像是生成容器的模板。映像包含應用程式運行所需的一切:代碼、庫、依賴項和配置文件。可以通過 Dockerfile(描述生成映像步驟的特定腳本)從零創建映像。此外,Docker Hub 提供了大量現成的映像——Docker 的公共映像庫。Docker Hub 讓開發者可以分享自己的映像,也可以使用他人創建的映像。

5. 分層文件系統:

Docker 使用分層文件系統(Union File System),這能節省空間和資源。每個映像由多個層組成,每層代表相對於前一層的變化。例如,一層可能包含基礎操作系統,另一層包含已安裝的庫,第三層是應用程式代碼。從映像生成容器時,會添加一個新的層來記錄變更,而不會影響原始層。這降低了網絡傳輸數據的量,加快了容器生成的過程。

6. 自動化與編排:

Docker 可以借助多種工具自動化構建、測試和部署應用程式。Docker Compose 用於管理多容器應用程式。通過它可在一個文件中(docker-compose.yml)描述所有服務,並用一條命令啟動它們。對於在大集群中的容器編排,會使用 Kubernetes——一個容器管理系統,提供自動擴展、故障恢復和負載均衡的功能。

1.3 Docker 的應用

Docker 在各種 IT 領域中被廣泛使用。讓我們來看看主要的方向:

1. 開發和測試:

開發人員使用 Docker 來創建隔離的開發和測試環境。這讓他們可以在不同版本的函式庫和框架中工作而不會發生衝突。測試人員可以快速部署環境來進行自動化測試。

2. 持續整合與部署 (CI/CD):

Docker 簡化了持續整合與部署的流程。使用它可以在每個構建階段創建並測試應用的 images,使得部署過程可靠且可預測。

3. 微服務:

Docker 是微服務架構的理想解決方案。在這種架構中,應用被分成小型的獨立服務,每個服務都可以單獨部署和擴展。

4. 雲端計算:

Docker 通過統一的打包格式簡化了應用在雲端的部署。這確保了應用能輕鬆地在不同的雲端平台和本地伺服器間移植。

Docker 的歷史是一段創新與合作之旅,它改變了 IT 行業。作為一個小型初創企業的內部項目開始,Docker 成為了一個全球現象,並且持續影響著全世界的應用開發和部署過程。這段歷程展示了,一個伴隨著堅定信念和明確願景實現的想法,可以改變整個行業。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION