Docker基本概念

2021-09-25 15:42:06 字數 2070 閱讀 9382

一、什麼是docker?

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

從下面的圖中我們可以看到docker容器技術和kvm虛擬化的區別:

cloud 時代採用標配硬體來降低成本,採用虛擬化手段來滿足使用者按需使用的需求以及保證可用性和隔離性。相對於docker來說kvm比較浪費資源,因為使用者需要的是高效執行環境而非os, guestos既浪費資源又難於管理, 更加輕量級的lxc更加靈活和快速 (linux container,是一種核心虛擬化技術,可以提供輕量級的虛擬化,以便隔離程序和資源,而且不需要提供指令解釋機制以及全虛擬化的其他複雜性,lxc在 linux 2.6 的 kernel 裡就已經存在了,但是其設計之初並非為雲計算考慮的,缺少標準化的描述手段和容器的可遷移性,決定其構建出的環境難於遷移和標準化管理,因為lxc輕量級的特點,其啟動快,而且docker能夠只載入每個container變化的部分,這樣資源占用小,能夠在單機環境下與kvm之類的虛擬化方案相比能夠更加快速和占用更少資源)

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

docker

物件導向

容器物件映象類

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

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

三、docker的原理

docker核心解決的問題是利用lxc來實現類似vm的功能,從而利用更加節省的硬體資源提供給使用者更多的計算資源。同vm的方式不同,lxc其並不是一套硬體虛擬化方法 - 無法歸屬到全虛擬化、部分虛擬化和半虛擬化中的任意乙個,而是乙個作業系統級虛擬化方法, 理解起來可能並不像vm那樣直觀。所以我們從虛擬化到docker要解決的問題出發,看看他是怎麼滿足使用者虛擬化需求的。

使用者需要考慮虛擬化方法,尤其是硬體虛擬化方法需要借助其解決的主要是以下4個問題:

(1)隔離性 - 每個使用者例項之間相互隔離, 互不影響。

(2)可配額/可度量 - 每個使用者例項可以按需提供其計算資源,所使用的資源可以被計量。

(3)移動性 - 使用者的例項可以很方便地複製、移動和重建。

(4)安全性 - 這裡強調是host主機的角度盡量保護container。

四、docker的侷限性

docker並不是全能的,設計之初也不是kvm之類虛擬化手段的替代品,簡單總結幾點:

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

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

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

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

5)cgroup的cpu和cpuset提供的cpu功能相比kvm的等虛擬化方案相比難以度量(所以dotcloud主要是按記憶體收費)

6)docker對disk的管理比較有限

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

五、docker安裝的核心要求

ubuntu 或其它 linux 作業系統也能玩 docker

centos 具體要求如下:

Docker基本概念

docker是開發人員和系統管理員構建,發布和執行應用程式的平台。docker允許您快速使用元件組裝應用程式,並消除運送 時可能產生的改變。docker允許您盡快測試並將 部署到生產環境中。docker可以簡化軟體交付,是通過簡化構建包含應用程式整個環境或應用程式作業系統的映象,並共享這個映象。應用...

Docker基本概念

docker 包括三個基本概念 理解了這三個概念,就理解了 docker 的整個生命週期。docker 映象就是乙個唯讀的模板。例如 乙個映象可以包含乙個完整的 ubuntu 作業系統環境,裡面僅安裝了 apache 或使用者需要的其它應用程式。映象可以用來建立 docker 容器。docker 利...

docker基本概念

集群 乙個集群指容器執行所需要的雲資源組合,關聯了若干伺服器節點 負載均衡 專有網路等雲資源。節點 一台伺服器 可以是虛擬機器例項或者物理伺服器 已經安裝了 docker engine,可以用於部署和管理容器 容器服務的 agent 程式會安裝到節點上並註冊到乙個集群上。集群中的節點數量可以伸縮。容...