學習docker後的個人理解

2022-05-04 06:45:09 字數 2937 閱讀 1239

注意 - docker 容器並不是針對某種特定的平台。 它可以在任何計算機,任何基礎架構和雲中執行。

執行時的效能可以獲取極大提公升(經典的案例是提公升97%)

管理操作(啟動,停止,開始,重啟等等) 都是以秒或毫秒為單位的。

敏捷像虛擬機器一樣敏捷,而且會更便宜,在bare metal(裸機)上佈署像點個按鈕一樣簡單。

靈活將應用和系統「容器化」,不新增額外的作業系統,

輕量你會擁有足夠的「作業系統」,僅需新增或減小映象即可。在一台伺服器上可以佈署100~1000個containers容器。

便宜開源的,免費的,低成本的。由現代linux核心支援並驅動。注*輕量的container必定可以在乙個物理機上開啟更多「容器」,注定比vms要便宜。

生態系統

正在越來越受歡迎,只需要看一看google的趨勢就知道了, docker or lxc.還有不計其數的社群和第三方應用。

雲支援不計其數的雲服務提供建立和管理linux容器框架。

任何專案都會有爭論,就像go,像nodejs, 同樣docker也有一些。

能否徹底隔離

在超複雜的業務系統中,單os到底能不能實現徹底隔離,乙個程式的崩潰/記憶體溢位/高cpu占用到底會不會影響到其他容器或者整個系統?很多人對docker能否在實際的多主機的生產環境中支援關鍵任務系統還有所懷疑。 注*就像有人質疑node.js單執行緒快而不穩,無法在複雜場景中應用一樣。

不過可喜的是,目前linux核心已經針對container做了很多改進,以支援更好的隔離。

go語言還沒有完全成熟

docker由go語言開發,但go語言對大多數開發者來說比較陌生,而且還在不斷改進,距離成熟還有一段時間。此半git、半包管理的方式讓一些人產生不適。

被私有公司控制

docker是一家叫dotcloud的私有公司設計的,公司都是以營利為目的,比如你沒有辦法使用源**編繹docker專案,只能使用黑匣子編出的docker二進位制發行包,未來可能不是完全免費的。 目前docker已經推出面向公司的企業級服務(諮詢、支援和培訓)

1.docker支援unix/linux作業系統,不支援windows或mac(即使可以在其上安裝,不過也是基於linux虛擬機器的)

2.docker用於應用程式時是最有用的,但並不包含資料。日誌,跟蹤和資料庫等通常應放在docker容器外。

3.靈活性,安全性,配置共享方面有所欠缺

1

. 簡化配置

這是docker公司宣傳的docker的主要使用場景。虛擬機器的最大好處是能在你的硬體設施上執行各種配置不一樣的平台(軟體、系統),docker在降低額外開銷的情況下提供了同樣的功能。它能讓你將執行環境和配置放在**中然後部署,同乙個docker的配置可以在不同的環境中使用,這樣就降低了硬體要求和應用環境之間耦合度。

2. **流水線(code pipeline)管理

前乙個場景對於管理**的流水線起到了很大的幫助。**從開發者的機器到最終在生產環境上的部署,需要經過很多的中間環境。而每乙個中間環境都有自己微小的差別,docker給應用提供了乙個從開發到上線均一致的環境,讓**的流水線變得簡單不少。

3. 提高開發效率

2014

大會或者是dockercon上的演講。

不同的開發環境中,我們都想把兩件事做好。一是我們想讓開發環境盡量貼近生產環境,二是我們想快速搭建開發環境。

理想狀態中,要達到第乙個目標,我們需要將每乙個服務都跑在獨立的虛擬機器中以便監控生產環境中服務的執行狀態。然而,我們卻不想每次都需要網路連線,每次重新編譯的時候遠端連線上去特別麻煩。這就是docker做的特別好的地方,開發環境的機器通常記憶體比較小,之前使用虛擬的時候,我們經常需要為開發環境的機器加記憶體,而現在docker可以輕易的讓幾十個服務在docker中跑起來。

4. 隔離應用

有很多種原因會讓你選擇在乙個機器上執行不同的應用,比如之前提到的提高開發效率的場景等。

5. 整合伺服器

正如通過虛擬機器來整合多個應用,docker隔離應用的能力使得docker可以整合多個伺服器以降低成本。由於沒有多個作業系統的記憶體占用,以及能在多個例項之間共享沒有使用的記憶體,docker可以比虛擬機器提供更好的伺服器整合解決方案。

6. 除錯能力docker

提供了很多的工具,這些工具不一定只是針對容器,但是卻適用於容器。它們提供了很多的功能,包括可以為容器設定檢查點、設定版本和檢視兩個容器之間的差別,這些特性可以幫助除錯bug。你可以在《docker拯救世界》的文章中找到這一點的例證。

7. 多租戶環境

另外乙個docker有意思的使用場景是在多租戶的應用中,它可以避免關鍵應用的重寫。我們乙個特別的關於這個場景的例子是為iot(譯者注:物聯網)的應用開發乙個快速、易用的多租戶環境。這種多租戶的基本**非常複雜,很難處理,重新規劃這樣乙個應用不但消耗時間,也浪費金錢。

使用docker,可以為每乙個租戶的應用層的多個例項建立隔離的環境,這不僅簡單而且成本低廉,當然這一切得益於docker環境的啟動速度和其高效的diff命令。你可以在這裡了解關於此場景的更多資訊。

8. 快速部署

在虛擬機器之前,引入新的硬體資源需要消耗幾天的時間。docker的虛擬化技術將這個時間降到了幾分鐘,docker只是建立乙個容器程序而無需啟動作業系統,這個過程只需要秒級的時間。這正是google和facebook都看重的特性。

你可以在資料中心建立銷毀資源而無需擔心重新啟動帶來的開銷。通常資料中心的資源利用率只有30%,通過使用docker並進行有效的資源分配可以提高資源的利用率。

面向產品:    產品交付

面向開發: 簡化環境配置

面向測試: 多版本測試

面向運維: 環境一致性

面向架構: 自動化擴容(微服務)

docker學習 三 docker通俗理解

感謝docker通俗按照自己的理解來說,就是類似vm虛擬機器一樣的虛擬技術。但是它比虛擬機器更加強大,體積小,執行速度快,啟動和關閉只需要幾秒。相對於普通虛擬機器來說,啟動時間在分鐘級別,占用記憶體大。所以這就是docker出現之後的優勢。docker容器可以打包為映象檔案 類似vm虛擬機器的那些快...

docker學習 三 docker理解及命令

映象 image 容器 container 倉庫 repository docker 映象就是乙個唯讀的模板。例如 乙個映象可以包含乙個完整的 ubuntu 作業系統環境,裡面僅安裝了 apache 或使用者需要的其它應用程式。映象可以用來建立 docker 容器。docker 利用容器來執行應用。...

個人對學習閉包的理解

我也從事前端這個行業1年了,最開始理解閉包是很多人的難點 雖然我的理解並不是很專業 但是可以作為乙個理解的方法 首先 閉包是為了保護區域性變數,避免汙染全域性。要判斷是否有閉包 1 一定有巢狀函式 2 內層函式操作了外層函式裡的變數 3 外層函式把內層函式返回到了外部,被群居變數儲存住了 外層函式被...