Docker?Python學習中必須要知道的操作系統

Docker是什麼?


簡單來說,Docker平臺是關於使用容器來使得創建、部署、運營變得更簡單的一切相關內容。容器可以讓開發者將一個應用程序打包,裡面包含了必須的部分,如應用程序依賴的庫和其他元素,以包的形式發佈出去。通過將app和相關的元素添加到容器內,開發者確保這個apps能夠運行在任何Linux機器上,不管機器有怎樣的默認配置,或者這個機器與編寫測試代碼的機器有多大區別。這點對開發者而言很有用,因為它使得整個生命週期內對app操作變得很容易。

Docker?Python學習中必須要知道的操作系統

Docker是一種類似虛擬機的東西,但它不會創建一個完整的操作系統(OS),它讓應用程序具有這個優勢,應用程序運行在一個系統上就如同它運行在Linux內核上一樣。那樣的話,應用程序只用添加不在宿主機上的東西而不是一整個OS。這就意味著,apps更小,比那些依賴系統的apps性能也更好。它也有其他一些好處。

對開發者和系統管理員而言,Docker是一個分佈式應用的開放平臺。它為基礎設施不可知的CaaS模型提供了一個集成的套件。有了Docker,IT運營團隊能夠對基礎設施資源和基本應用程序內容提供保護,管理,而開發者可以以一種自助的形式編譯和發佈他們的應用。

關鍵的優勢

開源


Docker的另一個關鍵因素是,它是完全開源的。這就意味著任何人都能給平臺提出意見,當Docker本身不包含他們需要的特性時,可以適配並擴展它以滿足他們自己的需求。所有這些使得對開發者和系統管理者而言,Docker是非常方便的選擇。

低開銷

因為開發者不需要提供一個真實的虛擬環境一直到硬件級別,通過只創建運行時必要的庫和OS部件,可以降低系統的開銷。

敏捷

思路上,Docker是依賴速度和簡單性來創建的。這也是它變得如此流行的部分原因。開發者現在能夠非常簡單地將軟件和依賴元素打包到一個容器中。他們能使用任何編程語言,任何版本、任何工具,因為它們是一起打包到一個容器中,因而,事實上標準化了所有元素,同時也並未丟棄任何東西。

可移植性

Docker以一種全新方式使得應用程序容器變得完全可移植。開發者現在能夠分發app從開發到測試到製作而又不破壞代碼。機器環境的差異不會對打包進容器中的東西造成任何影響。製作中不需要改變app,這點對IT運營團隊而言很有幫助,因為現在他們能夠在數據中心之間移動apps而又避免供應商依賴。

控制


當apps在生命週期中移動時,Docker提供了對apps最大程度的控制,因為環境是標準化的。這也使得很容易回答在整個過程中有關安全性、管理型、和規模方面的問題。針對特定項目,IT團隊可以定製需要的控制和靈活性級別來保持服務級別,性能和合規性。

它是怎麼被創造的以及它是如何出現的?

過去apps以一種非常不同的方式開發。有許多私人數據中心運行買來的程序,數據中心由龐大的代碼庫控制,每年都要升級一次。隨著雲計算的開發和應用,一切都改變了。現在世界上的公司都依賴於軟件去與他們的客戶聯繫,軟件選項變得越來越定製化。

隨著軟件變得更加複雜,服務,依賴性,基礎設施,對獲取app的終端狀態提出了很多挑戰。這就是Docker的來源。

在2013年,Docker被研發出來作為一種編譯、分發、運行應用程序的方式,在所有使用容器的地方。軟件容器是一種軟件的標準單元,它不受代碼和包含在代碼內部的依賴關係的影響。這使得開發者和系統管理員能夠處理在不同基礎設施和不同環境下移動軟件而無需任何修改的需求。

在2013年3月13日PyCon Lightning Talk – The future of Linux Containers大會上,Docker發佈。Moby Dock,Docker吉祥物,幾個月後被創造出來。同年9月,Docker和RedHat宣佈聯盟,引入了Fedora/RHEL兼容性。在2014年1月公司獲得了1500萬美元的B輪融資,同年8月Docker Engine1.2發佈。2014年9月他們獲得了4000萬美元的C輪融資,在2014年12月31日,Docker已經擁有了1億的容器下載量。在2015年4月,他們獲得了9500萬美元的D輪融資,擁有了3億的容器下載量。

它是怎麼工作的?

Docker是一種容器即服務(CaaS)。為了理解它是怎麼工作的,首先要了解一個Linux容器是什麼。


Linux容器

在一個通常的虛擬化環境中,虛擬機在系統管理程序(例如Xen, Hyper-V)的幫助下運行於物理機器之上。容器運行於操作系統內核之上的用戶空間。每個容器都有自身隊列的用戶空間,在一個主機上可以運行多個不同容器。通過使用兩種Linux內核特性:命名空間和控制組,一個主機中的容器能夠彼此獨立。

在Linux中有六個命名空間,它們允許容器包擁有自己的網絡接口,IP地址,等等。容器使用的資源由控制組來管理,它可以允許你限制容器能夠使用的CPU和存儲資源數量。

Docker

Docker是一種容器引擎,它使用了Linux內核特性,使容器運行於OS之上,在容器中自動化app部署。它提供了一個輕量級環境來運行app代碼,目的是創建一個更有效的工作流,當你在整個軟件生命週期中移動app時。它運行於一個客戶端-服務器架構。Docker Daemon負責與容器相關的所有動作,這個守護程序通過代理或REST APIs從Docker客戶端獲取命令。

容器從鏡像中編譯,這些鏡像可以配置包含apps,作為創建容器的一個模板。它們組織成一層,鏡像的每個變化會添加到它上面的一層。Docker鏡像存儲於Docker註冊機中,開發者使用公用或私用的註冊機去編譯並在團隊中共享鏡像。Docker-hosted的註冊機服務被稱為DockerHub(Docker公共倉庫),允許你從中心位置節點上傳下載鏡像。

一旦你有了鏡像,你可以創建一個容器,它是鏡像的一個可寫層。鏡像通知Docker容器包含什麼內容,當容器加載後要運行什麼進程和配置數據。一旦容器開始運行,你就可以管理它,與app交互,當你結束的時候停止並移除容器。這就使得運行app變得很容易,無需修改代碼。

為什麼開發者會在乎?

Docker在整個開發週期中對開發者很有幫助。它使得你可以在裝有app和服務的本地容器上進行開發,然後集成到一個持續集成和部署工作流中。本質上,它使得開發者的開發過程更加簡單。它特別有用處,基於以下原因:

更容易容量擴展

Docker使得保持工作負載高可移植性很容易。容器可以運行在開發者的本地主機,也能運行於物理或虛擬機器或雲服務中。這就使得管理工作負載更簡單,你可以近乎實時地用它來按比例增加或拆除app和服務。

更高的密度和更多工作負載

相對基於系統管理程序的虛擬機,Docker是一個輕量級和很划算的選擇,能適應高密度環境。對小型和中級部署也很有用,在這類型的部署中你想要充分利用你已經擁有的資源。

最後,關注可兒不迷路。每日都會分享一些學習小技巧。

學習資料領取處:關注、私信小編【資料】就可以領取啦。

相關推薦

推薦中...