在討論什麼是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 架...