docker基礎 (基本組成和虛擬機器的比較)

2021-10-23 13:43:46 字數 1726 閱讀 9334

在討論什麼是docker時,我們要了解docker為什麼會出現,他解決了什麼問題。乙個應用程式的開發和運維是兩個模組,開發要先把**或war包做好,然後交給運維進行維護,但其中很容易出現問題,因為配飾環境,執行環境,作業系統不同,很容易出現在開發環境中可以執行,但在運維環境中無法執行的偏差。

這個時候就需要乙個容器,不僅僅把**運輸過去,也要能把開發環境也搬運過去,這個大抵就是docker辦的事情。一句話解釋就是,docker是解決了執行環境和配置問題的軟體容器,方便持續整合並有助於整體發布的容器虛擬化技術

docker的價值主要就是有

解決了執行環境等不同導致的運營問題,實現了一次搭建,可以處處執行。

大大縮減了記憶體空間的占有。

加快了操作時間,縮減掉了不必要的過程,讓整套流程輕簡起來。

docker是容器虛擬化技術,看起來和虛擬機器是非相似,事實上,我們可以理解docker是乙個公升級優化後的輕簡版docker。

以往的docker主要有以下的幾個問題,

啟動時間長(分鐘級別),而docker是秒級別的

資源占用多,以centos為例,在虛擬機上安裝大約有4g,而在docker上只占有170m的記憶體。

冗餘步驟多。

那麼,為什麼docker能夠做到相對輕簡,而虛擬機器不行呢?

首先,虛擬機器是通過軟體模擬出完整硬體系統,執行在乙個完全隔離環境中的完整計算機系統,你可以理解為這是乙個裝在計算機裡面的計算機,所以他的記憶體占有量必然是極大地,就像是之前所有的演算法一樣,這個看起來相對粗暴一點,就必然有簡化的可能,於是docker應運而生了。

docker主要是有三個部分:映象(image),容器 (container),倉庫 (repository)

映象是乙個唯讀的模版,映象可以用來建立docker容器

容器是映象建立的容器例項,docker利用利用容器進行乙個或者一組應用。它可以啟動,刪除,停止,是相互隔離獨自執行的平台。

倉庫是儲存映象的地方。

我們可以分開理解這些部分,關於映象和容器的理解我們可以參照一下以下**:

public

static

void

main

(string[

] args)

class

stockprice

阿里雲映象加速

就像之前說的,虛擬機器是模擬出完整的整套硬體系統的,而docker不是把所有的部分都模擬出來,而是和宿主機公用一些共有的部分,比如說記憶體。我們開啟乙個虛擬機器可以看見如下的配置:

首先,docker比虛擬機器少更多的抽象層,他不需要用hypervisor虛擬出硬碟資源,是直接使用宿主機的硬體資源,所有極大程度的優化了記憶體。

其次,docker直接利用的是宿主機的核心,虛擬機器模擬系統的時候,要模擬出新的系統的核心,而doctor直接利用核心,就省略了很多過程。

如下圖我們可以進行兩者的對比:

紅框所示部分就是抽象層,黑框的部分就是虛擬機器模擬出來的系統核心,而這些在doctor中被docker引擎所代替。

Docker基本組成

docker client 客戶端 docker daemon 守護程序 c s架構的程式,docker客戶端向docker的伺服器端 守護程序 發出請求,守護程序處理完所有的工作,並返回結果 客戶端對伺服器端的訪問既可以在本地也可以在遠端來訪問。docker image 映象 1 理解一 映象是d...

Docker的基本組成

docker通過客戶端訪問守護程序,從而操作docker容器,而容器是通過映象建立的,docker映象儲存在docker倉庫中。docker客戶端向docker守護程序傳送請求,docker守護程序處理完所有請求並返回結果。docker對守護程序的訪問既可以在本地,也可以是遠端訪問。如圖所示,通過d...

Docker的基本組成

docker主要有以下幾部分組成 docker client 客戶端 docker daemon 守護程序 docker image 映象 docker container 容器 docker registry 倉庫 客戶端和守護程序 docker是c s 客戶端client 伺服器server 架...