docker簡介以及優缺點

2021-08-26 14:53:18 字數 3104 閱讀 1134

docker 是乙個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到乙個可移植的容器中,然後發布到任何流行的linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。

1.docker組成

乙個完整的docker有以下幾個部分組成:

dockerclient客戶端

docker daemon守護程序

docker image映象

dockercontainer容器

2.docker架構

docker 使用客戶端-伺服器 (c/s) 架構模式,使用遠端api來管理和建立docker容器。docker 容器通過 docker 映象來建立。容器與映象的關係類似於物件導向程式設計中的物件與類。

docker 

物件導向

容器物件映象類

docker採用 c/s架構 docker daemon 作為服務端接受來自客戶的請求,並處理這些請求(建立、執行、分發容器)。 客戶端和服務端既可以執行在乙個機器上,也可通過 socket 或者restful api 來進行通訊。

docker daemon 一般在宿主主機後台執行,等待接收來自客戶端的訊息。 docker 客戶端則為使用者提供一系列可執行命令,使用者用這些命令實現跟 docker daemon 互動。

3.docker典型場景

在docker的**上提到了docker的典型場景:

creation of lightweight,privatepaas environments(建立輕量、私密的paas環境)

automated testing and continuous integration/deployment(實現自動化測試和持續的整合/部署)

由於其基於lxc的輕量級虛擬化的特點,docker相比kvm之類最明顯的特點就是啟動快,資源占用小。因此對於構建隔離的標準化的執行環境,輕量級的paas(如dokku), 構建自動化測試和持續整合環境,以及一切可以橫向擴充套件的應用(尤其是需要快速啟停來應對峰谷的web應用)。

1.構建標準化的執行環境,現有的方案大多是在乙個baseos上執行一套puppet/chef,或者乙個image檔案,其缺點是前者需要baseos許多前提條件,後者幾乎不可以修改(因為copyonwrite 的檔案格式在執行時rootfs是read only的)。並且後者檔案體積大,環境管理和版本控制本身也是乙個問題。

2.paas環境是不言而喻的,其設計之初和dotcloud的案例都是將其作為paas產品的環境基礎

3.因為其標準化構建方法(buildfile)和良好的rest api,自動化測試和持續整合/部署能夠很好的整合進來

4.因為lxc輕量級的特點,其啟動快,而且docker能夠只載入每個container變化的部分,這樣資源占用小,能夠在單機環境下與kvm之類的虛擬化方案相比能夠更加快速和占用更少資源

4.docker侷限性

docker是基於linux 64bit的,無法在32bit的linux/windows/unix環境下使用

lxc是基於cgroup等linux kernel功能的,因此container的guest系統只能是linuxbase

隔離性相比kvm之類的虛擬化方案還是有些欠缺,所有container公用一部分的執行庫

網路管理相對簡單,主要是基於namespace隔離

container隨著使用者程序的停止而銷毀,container中的log等使用者資料不便收集

docker對disk的管理比較有限

docker並非適合所有應用場景,docker只能虛擬基於linux的服務。windows azure 服務能夠執行docker例項,但到目前為止windows服務還不能被虛擬化。

可能最大的障礙在於管理例項之間的互動。由於所有應用元件被拆分到不同的容器中,所有的伺服器需要以一致的方式彼此通訊。這意味著任何人如果選擇複雜的基礎設施,那麼必須掌握應用程式設計介面管理以及集群工具,比如swarm、mesos或者kubernets以確保機器按照預期運轉並支援故障切換。

docker在本質上是乙個附加系統。使用檔案系統的不同層構建乙個應用是有可能的。每個元件被新增到之前已經建立的元件之上,可以比作為乙個檔案系統更明智。分層架構帶來另一方面的效率提公升,當你重建存在變化的docker映象時,不需要重建整個docker映象,只需要重建變化的部分。

可能更為重要的是,docker旨在用於彈性計算。每個docker例項的運營生命週期有限,例項數量根據需求增減。在乙個管理適度的系統中,這些例項生而平等,不再需要時便各自消亡了。

針對docker環境存在的不足,意味著在開始部署docker前需要考慮如下幾個問題。首先,docker例項是無狀態的。這意味著它們不應該承載任何交易資料,所有資料應該儲存在資料庫伺服器中。

其次,開發docker例項並不像建立一台虛擬機器、新增應用然後轉殖那樣簡單。為成功建立並使用docker基礎設施,管理員需要對系統管理的各個方面有乙個全面的理解,包括linux管理、編排及配置工具比如puppet、chef以及salt。這些工具生來就基於命令列以及指令碼。

原文:

CSS Sprites簡介以及優缺點

css sprites簡介 通常被意譯為 css影象拼合 或 css貼圖定位 css sprites並不是一門新技術,目前它已經在網頁開發中發展得較為成熟,阿里巴巴各子公司的網頁中到處都可發現css sprites 的影子。但css sprites並不是什麼金科玉律,但在很多情況下,它有著一定的優勢...

python簡介 優缺點

優點 易於學習 python有相對較少的關鍵字,結構簡單,和乙個明確定義的語法,學習起來更加簡單。易於閱讀 python 定義的更清晰。易於維護 python的成功在於它的源 是相當容易維護的。乙個廣泛的標準庫 python的最大優勢之一是豐富的庫,跨平台的,在unix,windows和mac相容性...

Docker的使用場景以及優缺點

虛擬機器的最大好處是能在你的硬體設施上執行各種配置不一樣的平台 軟體,系統 docker在降低額外開銷的情況下提供了同樣的功能.它能讓你將執行環境和配置放在 彙總然後部署,同乙個docker的配置可以在不同的環境環境中使用,這樣就降低了硬體要求和應用環境之間耦合度.從開發者的機器到最終在生產環境上的...