【轉】Docker入門筆記01:Docker容器技術的發展歷程

原文:https://zhuanlan.zhihu.com/p/304623118

最近因爲工作需要,要學習一些基本的Docker知識,所以整理了一些docker的入門知識,感興趣的小白可以看看,一起學習進步。

要學習一個新的東西,我的習慣一般是先了解它是什麼,它是怎麼來的,發展歷史是怎樣的,用來解決什麼問題,有什麼優缺點。所以第1篇文章從瞭解Docker容器技術開始吧。

Docker是什麼

Docker 是一個基於Go語言實現的開源的容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的Linux機器或Windows 機器上。

Docker的發展歷史

2008年

Solomon Hykes 和他的朋友 Kamel Founadi、Sebastien Pahl 共同創立了一家名爲 DotCloud 的公司,目標是利用一種叫做容器的技術來創建他們稱作是『大規模的創新工具』:一種任何人都可以使用的編程工具。

2013年

2013 年 3 月

Docker 創始人 Solomon Hykes 在 PyCon 大會上的演講中首次公開介紹了 Docker 這一產品。

img

2013年3月20日

dotCloud發佈了 Docker 的首個版本 0.1.0,並將Docker源碼進行開源([https://github.com/docker])。

2013年9月

紅帽公司成爲Docker的主要合作伙伴,利用Docker來驅動他的OpenShift雲業務。隨後,谷歌、亞馬遜以及DigitalOcean也迅速的在其雲服務平臺提供了Docker的支持。

主流雲廠商的加入,加速Docker的發展進度。

Docker 的強大之處在於它通過可移植的形式和易於使用的工具在應用程序和基礎設施之間創造了獨立性。其結果是,Docker將容器技術大衆化,並解決了困擾數百萬開發人員的"matrix from hell"問題,使容器技術成爲主流。

2013年底
DotCloud Inc則更名爲Docker Inc

2014年

2014年6月

DockerCon大會上Docker正式發佈了Docker 1.0 版本。

這意味着Docker的穩定性和可靠性已經基本滿足了生產環境的運行需求。

會議上同時發佈Docker Image的鏡像倉庫Docker Hub([http://hub.docker.com/]),並指出已經有超過14,000個Docker化的應用存儲在他們的publc registry中。

同樣是2014年6月,基於谷歌內部強大的Borg系統而開發出來的kubernetes橫空處世,刷新了人們對容器的理解。

img

2014年12月

DockerConEU大會上,Docker Swarm 和Docker Machine同時面世。

Docker Swarm是一個Docker集羣管理工具,而Docker Machine是部署Docker主機的命令工具。

CoreOS宣佈開發自家的容器運行環境rkt以及appc(應用容器規範)。

2015年

2015年6月

容器技術不只Docker,很早之前Google就投資了CoreOS來做競爭的容器--Rocket。

那時是三家鼎立:Docker/Rocket/Warden,爲了避免慘烈的競爭,大家終於統一意見,決定成立固定的標準來良好發展容器技術。

由Docker、IBM、微軟、紅帽及Google等廠商所組成的開放容器項目OCP聯盟成立,該項目旨在建立軟件容器的通用標準。OCP成立於Linux基金會之下,其使命是使用戶和公司能夠繼續創新和開發基於容器的解決方案,並充滿信心地保護其先前的開發工作,並且不會造成行業分散。作爲該計劃的一部分,Docker將捐贈其軟件容器格式,運行時以及相關規範的代碼。應用容器規範(“ appc”)計劃的領導者,包括創始成員CoreOS,也將把他們的技術領導力和支持帶到OCP。

2015 年,Docker 發佈了 runC工具,runc是根據OCI(Open Container Initiative)標準生成的一個cli工具,一個輕量級的跨平臺的容器運行時命令行小工具,可以直接利用 libcontainer 運行容器,而無需通過 docker engine。runC 的目標是使標準容器在任何地方都可用。

2016年

2016年6月

DockerCon上,Docker宣佈了Open Container Initiative的正式成立。

OCI意在業界一起合作,開發一個開放的、標準的容器格式和runtime。OCI也屬於Linux基金會的協作項目,一直秉承着開放的模式來管理,其roadmap在GitHub上,大家都可以看到並參與進去:[https://github.com/opencontainers/specs/blob/master/ROADMAP.md])

2016年,OCI標準制定後,Docker 將 containerd 獨立拆分,並將其捐贈給了社區。將這個組件分解爲一個單獨的項目,使得 docker 將容器的管理功能移出 docker 的核心引擎並移入一個單獨的守護進程(即 containerd)。

在2016年,人們認識到容器技術本身的價值時在於容器的編排,而此時的Docker項目令人驚訝的放棄了Swarm項目,而是想將容器的編排和集羣的管理功能添加到Docker項目當中。而Kubernetes卻與Docker不同的是推進民主化架構,使得通過暴露Kubernetes API的方法,讓更多的人來不斷豐富kubernetes的插件。

2017年

從2013年3月開始推出0.1.0版本,到17年2月1.13的版本都採用x.x的形式。
從 2017 年第一季度開始,Docker 版本號遵循 YY.MM-xx 格式。
採用新格式前的最後一個版本是 Docker 1.13。

2017 年是容器成爲主流技術的一年。

2017 年於 Austin 舉辦的 DockerCon 上開源Docker項目正式命名爲 Moby 項目。由於這次改名,GitHub 上的 docker/docker 庫也被轉移到了 moby/moby,並且擁有了項目自己的 Logo。

Moby是Docker的上游項目,是Docker之母。正因如此,Docker這個名字也已經不適合作爲原來源碼庫的名字了。而對於普通的容器個人使用者或者企業,影響並不是太大。對於一些容器系統廠商和組件提供方,Moby提供了一種新形式的協作平臺,可以定製化、增強、適配容器系統等等。

於此同時,將Docker本身拆分爲 Docker-CE免費版 和 Docker-EE商業版。
Docker-CE目前是docker公司維護的開源項目,是一個基於Moby項目的免費的容器產品。
Docker-EE目前是docker公司維護的閉源項目,是docker公司的商業產品。

至此,Docker天下三分。其中Moby由社區維護,Docker-CE由Docker公司維護,Docker-EE是Docker公司閉源的商業產品。

2018年及以後

容器市場基本趨於穩定,一切都向着優化改進方向發展。

Docker公司是底層容器引擎及運行時的。
容器的編排進過幾輪的激烈競爭,基本是Google的Kubernetes一家獨大。

新的戰鬥已經由容器和編排的戰場,逐漸遷移到應用領域。雲原生CNCF將引領新的技術方向,微服務、ServcieMesh、Envoy、ServerLess等正在路上。

其他

Docker 一詞來自英國口語,意爲碼頭工人(Dock Worker),即從船上裝卸貨物的人。

Docker 引擎是用於運行和編排容器的基礎設施工具,其他 Docker 公司或第三方公司的產品都是圍繞 Docker 引擎進行開發和集成的。

Docker 引擎主要有兩個版本:企業版(EE)和社區版(CE)。每個季度,企業版和社區版都會發佈一個穩定版本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章