**二、**Docker介紹
2.1 什么是虛擬化
在計算機中,虛擬化是一種資源管理技術,是將計算機的各種實體資源,如:服務器、網(wǎng)絡、內(nèi)存、存儲等等,予以抽象、轉換后呈現(xiàn)出來,打破實體結構間的不可切割的障礙,使用戶可以比原來的組態(tài)更好的方式來應用這些資源,這些資源的核心虛擬部分是不受現(xiàn)有資源的架設方式,低于或者物理組態(tài)所限制,一般所指的虛擬化資源包括計算能力和資料存儲。
在實際的生產(chǎn)過程中,虛擬化技術主要是用來解決高性能的物理硬件產(chǎn)能過剩和老的硬件產(chǎn)能過低的重用重組,透明化底層物理硬件,從而最大化的利用物理硬件,對資源充分利用。
虛擬化技術種類很多,例如:軟件虛擬化、硬件虛擬化、內(nèi)存虛擬化、網(wǎng)絡虛擬化(vip),桌面虛擬化、服務虛擬化、虛擬機等等。
虛擬化簡單講,就是把一臺物理計算機虛擬成多臺邏輯計算機,每個邏輯計算機里面可以運行不同的操作系統(tǒng),相互不受影響,這樣就可以充分利用硬件資源。
2.2 認識Docker
- Docker是一個開源的應用容器引擎
- 誕生于2013年初,基于Go語言實現(xiàn),dotCloud公司出品(后改名為Docker Inc)Docker可以讓開發(fā)者打包他們的應用以及依賴包到一個輕量級,可移植的容器中,然后發(fā)布到任何流行的linux服務器上
- 容器是完全使用沙箱機制,相互隔離
- 容器性能開銷極低
- Docker從17.3版本之后分為CE(Community Edition社區(qū)版)和EE(Enterprise Edition企業(yè)版)
小結:Docker是一種容器技術,解決軟件跨環(huán)境遷移的問題
2.3 容器與虛擬機比較
2.3.1 什么是虛擬機
虛擬機是一個計算機系統(tǒng)的仿真,簡單來說,虛擬機可以實現(xiàn)在一臺物理計算機上模擬多臺計算機運行任務。
-
操作系統(tǒng)和應用共享一臺或多臺主機(集群)的硬件資源,每臺VM有自己的OS,硬件資源是虛擬化的。
-
管理程序(hypervisor)負責創(chuàng)建和運行VM,它連接了硬件資源和虛擬機,完成server的虛擬化。
由于虛擬化技術和云服務的出現(xiàn),IT部門通過部署VM可以可減少cost提高效率
VMs也消耗大量系統(tǒng)資源,每個VM不僅運行一個OS的完整copy并且需要所有硬件的虛擬化copy,這消耗大量RAM和CPU。
相比單獨計算機,VM是比較經(jīng)濟的,但對于一些應用VM是過度浪費的,需要容器。
2.3.2 什么是容器
- 容器是將操作系統(tǒng)虛擬化,這與VM虛擬化一個完整的計算機有所不同。
- 容器是在操作系統(tǒng)之上,每個容器共享OS內(nèi)核,執(zhí)行文件和庫等。共享的組件是只讀的,通過共享OS資源能夠減少復現(xiàn)OS的代碼,意味著一臺server僅安裝一個OS可以運行多個任務。
- 容器是非常輕量的,僅僅MB水平并且?guī)酌爰纯蓡印O啾热萜?,VM需要幾分鐘啟動,并且大小也大很多。
2.4、 Docker與虛擬機形象比喻
2.4.1 什么是物理機
2.4.2 什么是虛擬機
2.4.3 什么是docker
三、Docker 組件
3.1 Docker 服務端和客戶端
Docker是一個客戶端-服務端(C/S)架構程序 ,Docker客戶端只需要向Docker服務端或者守護進程發(fā)出請求,服務端或者守護進程完成所有工作返回結果。
Docker提供了一個命令行工具Docker以及一整套的Restful API,可以在同一臺宿主機器上運行Docker守護進程或者客戶端,也可以從本地的Docker客戶端連接到運行在另一臺宿主機上的遠程Docker守護進程。
docker引擎是一個c/s結構的應用,主要組件見下圖:
- Server是一個常駐進程
- REST API 實現(xiàn)了client和server間的交互協(xié)議
- CLI 實現(xiàn)容器和鏡像的管理,為用戶提供統(tǒng)一的操作界面
3.2 Docker 構架
Docker使用C/S架構, Client 通過接口與Server進程通信實現(xiàn)容器的構建,運行和發(fā)布 .client和server可以運行在同一臺集群,也可以通過跨主機實現(xiàn)遠程通信。
3.2.1 Docker 鏡像
Docker 鏡像(Image)就是一個只讀的模板。例如:一個鏡像可以包含一個完整的操作系統(tǒng)
環(huán)境,里面僅安裝了 Apache 或用戶需要的其它應用程序
- 鏡像可以用來創(chuàng)建 Docker 容器,一個鏡像可以創(chuàng)建很多容器。Docker 提供了一個很簡單的機制來創(chuàng)建鏡像或者更新現(xiàn)有的鏡像,用戶甚至可以直接從其他人那里下載一個已經(jīng)做好的鏡像來直接使用。
- 鏡像(Image)就是一堆只讀層(read-only layer)的統(tǒng)一視角,也許這個定義有些難以理解。
看看下面這張圖:
右邊可以看到多個只讀層,它們重疊在一起,除了最下面一層,其它層都會有一個指針指向下一層。這些層是Docker內(nèi)部的實現(xiàn)細節(jié),并且能夠在docker宿主機的文件系統(tǒng)上訪問到。
統(tǒng)一文件系統(tǒng)(Union File System)技術能夠將不同的層整合成一個文件系統(tǒng),為這些層提供了一個統(tǒng)一的視角,這樣就隱藏了多層的存在,在用戶的角度看來,只存在一個文件系統(tǒng)。
3.2.2 Docker 容器
Docker 利用容器(Container)來運行應用。容器是從鏡像創(chuàng)建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平臺。
-
可以把容器看做是一個簡易版的 Linux 環(huán)境(包括root用戶權限、進程空間、用戶空間和網(wǎng) 絡空間等)和運行在其中的應用程序。
-
創(chuàng)建Container首先要有Image,也就是說Container是通過image創(chuàng)建的。
-
Container是在原先的Image之上新加的一層,稱作Container layer,這一層是可讀可寫的(Image是只讀的)。
在面向對象的編程語言中,有類跟對象的概念。類是抽象的,對象是類的具體實現(xiàn)。Image跟
Container可以類比面向對象中的類跟對象,Image就相當于抽象的類,Container就相當于具體實例化的對象。
Image跟Container的職責區(qū)別:Image負責APP的存儲和分發(fā),Container負責運行APP
3.2.3 Registy(注冊中心)
倉庫(Repository)是集中存放鏡像文件的場所。 有時候會把倉庫和倉庫注冊服務(Registry)混為一談,并不嚴格區(qū)分。
實際上,倉庫注冊服務器上往往存放多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag)。
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
- 最大的公開倉庫是Docker Hub,存放了數(shù)量龐大的鏡像供用戶下載。
- 國內(nèi)的公開倉庫包括時速云 、網(wǎng)易云等,可以提供大陸用戶更穩(wěn)定快速的訪問。
- 當然,用戶也可以在本地網(wǎng)絡內(nèi)創(chuàng)建一個私有倉庫,當用戶創(chuàng)建了自己的鏡像之后就可以使用 push 命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺機器上使用這個鏡像時候,只需要從倉庫上 pull 下來就可以了。
Docker 倉庫的概念跟 Git 類似,注冊服務器可以理解為 GitHub 這樣的托管服務。
**
-
服務器
+關注
關注
13文章
9795瀏覽量
88002 -
Docker
+關注
關注
0文章
515瀏覽量
12971
發(fā)布評論請先 登錄
Docker是什么?
Docker入門指南
docker基礎知識和使用bmnnsdk時的docker常用命令
學習 Docker 容器的 8 個命令分享

docker存儲驅動的工作原理
應用于Docker的安全工具介紹
docker 搜索鏡像,docker查看鏡像詳細信息(docker下載鏡像命令)
如何啟動本機docker服務
docker進入容器的方法有哪些
docker核心組件有哪些
【技術案例】Android in Docker

評論