Docker(一) 初識Docker

1、Docker簡介

       什麼是Docker呢?Docker是一種新興的虛擬化方式。Docker其實就是一個容器,這個容器能夠放置咱們的應用,管理咱們的應用。Docker本意是碼頭工人,碼頭工人是幹什麼的,就是管理集裝箱的,而集裝箱中裝的就是咱們的應用。php

2、爲何要用Docker

       咱們要在服務器上放置應用,不一樣的應用程序可能會有不一樣的應用環境,好比.net開發的網站和php開發的網站依賴的軟件就不同,若是把他們依賴的軟件都安裝在一個服務器上就要調試好久,並且很麻煩,還會形成一些衝突。前端

       在沒有Docker的時代,一般咱們會在服務器上建立不一樣的虛擬機來放置不一樣的應用,目的是隔離不一樣應用的環境,可是一個完整的虛擬機包含了一整套操做系統、一個或多個應用、必要的二進制文件和庫資源,所以佔用大量空間。並且虛擬機啓動也十分緩慢 。數據庫

       而在有了Docker以後就不同了,Docker是一個應用層抽象,用於將代碼和依賴資源打包在一塊兒。 多個容器能夠在同一臺機器上運行,共享操做系統內核,但各自做爲獨立的進程在用戶空間中運行 。與虛擬機相比, 容器佔用的空間較少(容器鏡像大小一般只有幾十兆),瞬間就能完成啓動 。後端

       簡而言之,使用Docker的目的:服務器

       ·爲應用提供須要的應用環境架構

  ·節省開銷,更合理的利用資源網站

        固然咱們會根據不一樣的需求去決定究竟是使用Docker仍是虛擬機,他們各有各額特色。虛擬機更擅長於完全隔離整個運行環境,例如,雲服務提供商一般採用虛擬機技術隔離不一樣的用戶。而Docker一般用於隔離不一樣的應用 ,例如前端,後端以及數據庫。spa

       圖示Docker與虛擬機操作系統

     

       上圖左邊就是Docker打包應用的方式,而右邊就是虛擬機打包的方式,能夠看到Docker只須要在服務器上安裝了Docker的服務,就能夠運行多個不用的應用。而虛擬機則是建立多個應用所需的操做系統來進行隔離。固然咱們也能夠從上圖看到Docker和虛擬機是能夠共存的。.net

3、Docker的基本概念

       Docker中有很是重要的三個基本概念,理解了這三個概念,就理解了 Docker 的整個生命週期。

       ·鏡像

       鏡像(Image)至關於一個分層存儲的用戶文件系統,是一堆只讀層(read-only layer)的統一視角。

       什麼意思呢?操做系統分爲內核和用戶空間。對於 Linux 而言,內核啓動後,會掛載 root 文件系統爲其提供用戶空間支持。而 Docker 鏡像(Image),就至關因而一個 root 文件系統(這裏也就解釋了爲何一個主機裏能夠有n多個Docker了,由於他們都在共用一個內核啊)。由於鏡像包含操做系統完整的 root 文件系統,其體積每每是龐大的,所以在Docker 設計時,就充分利用 Union FS 的技術,將其設計爲分層存儲的架構。因此說,它是一堆只讀層的統一視角,它是由多層文件系統聯合組成。

       

 

       ·容器

       容器(container)的定義和鏡像(image)幾乎如出一轍,也是一堆層的統一視角,惟一區別在於容器的最上面那一層是可讀可寫的。 

       鏡像是靜態的定義,容器是鏡像運行時的實體(很相似與面向對象中的類與對象)。

       容器的實質是進程,但與直接在宿主執行的進程不一樣,容器進程運行於屬於本身的獨立的 命名空間。所以容器能夠擁有本身的 root 文件系統等。容器內的進程是運行在一個隔離的環境裏,使用起來,就好像是在一個獨立於宿主的系統下操做同樣。

       要點:容器 = 鏡像 + 讀寫層。而且容器的定義並無說起是否要運行容器。

 

        ·倉庫

       鏡像構建完成後,能夠很容易的在當前宿主上運行,可是,若是須要在其它服務器上使用這個鏡像,咱們就須要一個集中的存儲、分發鏡像的服務,Docker Registry就是這樣的服務。

       一個 Docker Registry 中能夠包含多個倉庫(Repository);每一個倉庫能夠包含多個標籤(Tag);每一個標籤對應一個鏡像。

       倉庫就是咱們存放鏡像的地方

   

       簡單的概念就是這些了,更深刻的在後續慢慢理解。

相關文章
相關標籤/搜索