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

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

評論