Docker
![]() |
Docker是一組平台即服務[1](PaaS)的產品。它基於操作系統層級的虛擬化技術,將軟件與其依賴項打包為容器。託管容器的軟件稱為Docker引擎。Docker能夠幫助開發者在輕量級容器中自動部署應用程序,並使得不同容器中的應用程序彼此隔離,高效工作。該服務有免費和高級版本。它於2013年首次發布,由Docker, Inc. 開發。
目錄
[隱藏]定義
Docker是一個開源的平台,用於開發、交付和運行應用程序。它能夠在Windows,macOS,Linux計算機上運行,並將某一應用程序及其依賴項打包至一個容器中,這些容器可以在任何支持Docker的環境中運行。容器彼此隔離,但可以通過特定的通道相互傳遞信息。
Docker提供了一個輕量級的虛擬化解決方案。由於運行在同一計算機上的所有容器共享同一個操作系統內核,避免了啟動與維護虛擬機的開銷。因此相比於傳統的虛擬機,Docker容器更加輕便、快速、容易部署。使用Docker,開發者可以避免在兩台計算機上運行效果不一致的問題,容器提供了一致的行為,進而使得應用程序在不同環境的計算機[2]上有相同的運行效果。
發展歷史
技術起源
最初Docker是PaaS提供商dotCloud開源的一個基於LXC的高級容器引擎,源代碼託管在Github上。後基於go語言自研libcontainer用以替換LXC。
Docker自2013年以來非常火熱,無論是從github上的代碼活躍度,還是Redhat在RHEL6.5中集成對Docker的支持,就連Google的Compute Engine也支持Docker在其之上運行。
Docker之所以大獲成功,是因為彼時的軟件開發者面臨如下情況:
環境管理複雜
從各種OS到各種中間件到各種app,一款產品能夠成功作為開發者需要關心的東西太多,且難於管理,這個問題幾乎在所有現代IT相關行業都需要面對。
雲計算時代的到來
AWS的成功,引導開發者將應用轉移到cloud上,解決了硬件管理的問題,然而中間件相關的問題依然存在(所以openstack HEAT和AWS cloudformation都着力解決這個問題)。開發者思路變化提供了可能性。
虛擬化手段的變化
cloud時代採用標配硬件來降低成本,採用虛擬化手段來滿足用戶按需使用的需求以及保證可用性和隔離性。然而無論是KVM還是Xen在Docker看來,都在浪費資源,因為用戶需要的是高效運行環境而非OS,GuestOS既浪費資源又難於管理,更加輕量級的LXC更加靈活和快速
LXC的移動性
LXC在linux 2.6的kernel里就已經存在了,但是其設計之初並非為雲計算考慮的。缺少標準化的描述手段和容器的可遷移性,決定其構建出的環境難於遷移和標準化管理(相對於KVM之類image和snapshot的概念)。LXC時代的Docker就在這個問題上做出實質性的革新。這是Docker最獨特的地方。
面對上述幾個問題,Docker設想是交付運行環境如同海運,OS如同一個貨輪,每一個在OS基礎上的軟件都如同一個集裝箱。用戶可以通過標準化手段自由組裝運行環境,同時集裝箱的內容可以由用戶自定義,也可以由專業人員製造。這樣,交付一個軟件,就是一系列標準化組件的集合的交付,如同樂高積木,用戶只需要選擇合適的積木組合,並且在最頂端署上自己的名字(最後一個標準化組件是用戶的app)。這也就是基於Docker的PaaS產品的原型。
發展歷程
2010年夏季,Founder's Den的第一批孵化項目中的12家初創公司之一,Docker Inc.由Kamel Founadi、Solomon Hykes和Sebastien Pahl[16]在Y Combinator在夏季創業孵化器團隊中創立,並於2011年運營。之後,Hykes在法國的dotCloud(一家PaaS公司)內部啟動了Docker項目。
2014年,隨着0.9版本的發布,Docker用自己的組件libcontainer替換了LXC,後者是用Go編程語言編寫的。同年11月,亞馬遜彈性計算雲(EC2)的Docker容器服務發布。
2016年4月,獨立軟件供應商Windocks向Windows發布了Docker開源項目的移植版,支持Windows Server 2012 R2和Server 2016,以及SQL Server 2008的所有版本。這一年的6月8日,得益於Hyper-V技術,Docker可以在Windows 10(僅限專業版與企業版)上原生使用。
2020年8月,微軟宣布將WSL2反向移植到Windows 10版本1903和1909(以前WSL2僅在2004版本上可用)[18]Docker隨之增加了這些平台的適用性。
一年後,適用於Windows和MacOS的Docker Desktop不再對企業用戶免費。Docker結束了大型企業客戶的免費Docker Desktop使用,並用個人計劃取代了其免費計劃。Linux發行版上的Docker不受影響[20]。
2023年4月18日,以145億人民幣的企業估值入選《2023·胡潤全球獨角獸榜》,排名488[21]。
版本演進
Docker 1.0(2014年6月)
里程碑:Docker 1.0標誌着Docker作為生產就緒的容器化平台正式發布。該版本奠定了Docker的基礎,包括鏡像、容器、倉庫等核心概念,為後續發展鋪平了道路。
主要功能:引入了docker run、docker build等基礎命令,支持創建和管理容器化應用。
Docker 1.x系列(2014-2016年)
增強功能:Docker 1.x系列不斷引入新特性,如docker-compose、多階段構建(multi-stage build)、網絡和存儲驅動等。同時,這一系列版本逐步優化了Docker的性能和穩定性。
重要更新:Docker 1.3中引入了安全選項,Docker 1.8增加了Docker Registry 2.0,支持分層存儲和分布式存儲後端。
Docker 1.12(2016年7月)
Swarm模式集成:Docker 1.12是一個重要的版本,它將Docker Swarm直接集成到了Docker引擎中,使得容器編排變得更加簡單。這一版本使得用戶可以更輕鬆地部署和管理分布式應用,直接在Docker中實現服務的自動擴展和容錯。
Docker 17.x(2017年)
版本命名調整:在2017年,Docker將版本號命名方式調整為基於年份的命名規則,如17.03、17.06、17.09等。這一系列版本引入了更多企業級功能,並進一步增強了容器管理和編排的能力。
社區與企業版分離:Docker 17.03開始,Docker被分為社區版(Docker CE)和企業版(Docker EE),分別面向開發者和企業用戶。
Docker 18.x(2018年)
Kubernetes集成:Docker 18.09是一個具有里程碑意義的版本,首次將Kubernetes作為可選的編排引擎集成到Docker Desktop中,進一步增強了Docker在雲原生應用中的適用性。
功能擴展:Docker 18.x系列還加強了多階段構建、BuildKit等功能,提高了鏡像構建的效率和靈活性。
Docker 19.x(2019年)
Rootless模式:Docker 19.03引入了實驗性的rootless模式,使得非root用戶也能運行Docker容器,從而提升了安全性。
BuildKit默認啟用:這一版本默認啟用了BuildKit,使得鏡像構建過程更加高效、靈活,並支持更複雜的構建場景。
Docker 20.x系列(2020-2021年)
增強容器運行時:Docker 20.10引入了更加穩定和優化的容器運行時,改進了CLI和API,使得用戶體驗更加流暢。
社區支持:隨着Docker 20.x系列的發展,Docker社區版(Docker CE)繼續優化性能和安全性,並在開源社區中保持了廣泛的支持。
Docker 21.x系列及之後(2022年至今)
持續優化與集成:Docker在21.x系列中進一步優化了跨平台支持,特別是針對Apple Silicon(M1、M2)芯片的改進,以及與Kubernetes、CI/CD工具更緊密的集成。
供應鏈安全:新版本中加強了供應鏈安全措施,如鏡像簽名、鏡像掃描等功能,幫助企業更好地管理和保護容器鏡像。
參考文獻
- 移至 ↑ 職場人生 || 服務是什麼?什麼叫服務到位? ,搜狐,2019-09-30
- 移至 ↑ 中國建造全球最大超導量子計算機,未來科技將如何改變我們?,搜狐,2024-10-25