使用者可以從單個映象啟動乙個或多個容器
虛擬機器執行在完整的作業系統上,容器會共享宿主機的作業系統核心.
在虛擬機器模型中,需要開啟物理機並啟動hypervisor引導程式,一旦hypervisor啟動,就會占用機器上的所有物理資源.接下來hypervisor會將這些資源劃分為虛擬資源,並且看起來和真實物理資源完全一致,在虛擬機器中可以安裝os和應用.然後hypervisor會將這些資源打包進乙個叫做虛擬機器vm的軟體結構中.虛擬機器的結構圖如下.
容器模型則略有不同.
在容器模型中,os占用了全部的硬體資源,在os層之上需要安裝容器引擎,容器引擎可以獲取系統資源,比如程序樹,檔案系統以及網路棧,並把資源分割為安全的相互隔離的資源結構,稱之為容器.每個容器看起來就像乙個真實的作業系統.容器的結構圖如下.
從更高層面上講,hypervisor是硬體虛擬化(hypervisor將硬體資源劃分為虛擬資源),而容器是作業系統虛擬化(容器將系統資源劃分為虛擬資源).
作業系統本身會消耗一定的cpu,ram和儲存空間,並且每個作業系統都需要獨立的許可證,並且都需要打補丁公升級,每個作業系統都面臨被攻擊的風險,這種現象稱作os tax 或者 vm tax.而容器共享乙個作業系統核心,只有乙個作業系統需要占用資源,只有乙個需要授權和公升級,簡而言之就是只有乙個份os的消耗
容器不是完成的作業系統,啟動速度遠比虛擬機器快,容器內部不需要核心,也就沒有定位,解壓以及初始化過程,更不用提在核心啟動過程中對硬體的遍歷和初始化了
容器可以在更少的資源上執行更多的應用,啟動更快,並且支付更少的授權和管理費用,同時面對未知攻擊的風險也更小.
docker container run/stop/start/rm
docker container rm -f 是一種暴力刪除容器的方式, 更佳的方式是docker container stop再rm,這樣給容器中執行的應用停止並清理殘留資料的機會.
總結下容器的生命週期,可以根據需要多次停止,啟動,暫停以及重啟容器,這些操作執行得很快,但是容器及其資料時安全的.直到明確刪除容器前,容器都不會丟棄其中的資料.就算容器被刪除了,如果將資料存在卷中,資料也會被儲存下來.
docker高階與實戰 5 docker網路
docker原生網路不足,第三方sdn解決方案來滿足各種需求.docker收購socketplane後,libnetwork專案開始發力.libnetwork定義了新的容器網路模型cnm,標準api為容器配置網路,底層適配各種驅動.cnm包括三個概念 沙盒 linux平台上基於linux netwo...
《Docker 》筆記 5 資料管理
容器中管理資料主要有兩種方式 資料卷 data volumes 資料卷容器 data volume container是 6.1 資料卷 資料卷是乙個可供容器使用的特殊目錄,它繞過檔案系統。特性 資料卷可在容器間共享和重用。對資料卷的修改會立即生效。對資料卷的更新,不影響映象。捲會一直存在,直到沒有...
Docker學習筆記 Docker容器
docker利用容器執行應用,容器是從映象建立的執行例項,每個容器都是相互隔離的。映象是唯讀的,容器在啟動的時候在其上建立了一層可讀寫層。啟動乙個容器有兩種方法,一種是從映象建立乙個容器並執行,另一種是重新啟動處於終止狀態的容器。使用docker run命令從映象建立並啟動乙個容器。使用docker...