1. 程式人生 > >Docker從入門到熟練使用(詳解,第一篇,共五篇)

Docker從入門到熟練使用(詳解,第一篇,共五篇)

Docker

  1. docker的出現

Docker是誕生於2013年,是dotCloud的一個開源專案,基於Google推出的GO語言實現。遵從Apache2.0協議。

  1. docker的介紹

Docker的目標是實現輕量級的作業系統虛擬化的解決方案。

Docker的基礎是Linux容器(LXC)等技術,(LXC系統提供工具來管理容器,具有先進的網路和儲存支援,還有最小容器作業系統模版的廣泛選擇)。

在LXC的基礎上Docker進行了進一步的封裝,使用者不需要去關心容器的管理,操作更簡單。就像操作一個快速輕量的虛擬機器一樣簡單。

  1. docker的優勢
  1. 更快速的交付和部署。

Docker可以在整個開發週期輔助實現快速交付,允許開發者在裝有應用和伺服器本地容器做開發。可以直接整合到可持續的開發流程中。

Docker可以快速建立容器,快速迭代應用程式,過程全程可見,可以節約開發測試部署的時間。

例如:用一個標準的映象,構建一套開發容器,開發完成後,運維可以直接使用容器這個容器部署程式碼。

  1. 高效的部署和擴容。

Docker容器幾乎可以在任意平臺執行,包括物理機,虛擬機器,公有云,私有云,個人電腦,伺服器等。使用者可以把一個應用程式從一個平臺直接遷移到另一個平臺上。

Docker的相容性和輕量特性可以輕鬆的實現負載的動態管理

  1. 更高的資源利用率。

Docker對系統的利用率很高,一臺主機可以同時執行上千個Docker容器,容器除了執行其中的應用,不會消耗額外的系統資源,使應用效能很高。開銷減少。

例如:傳統的虛機方式執行10個不同的應用,需要起十個虛機.

         而Docker只需要啟動10個隔離的應用即可。

      4,更簡單的管理。

              Docker只需要小小的修改,就可以代替大量的更新工作,所有的改動都

增量的方式被分發和更新,實現自動化高效的管理。

Docker引擎

      Docker引擎是C/S結構的應用,主要元件如下。

  1. Server是一個常駐程序
  2. RESET API 實現了client(客戶端)和server(伺服器)的互動協議
  3. CLI實現了容器和映象的管理,提供統一的操作介面。

Docker架構

       Docker使用C/S架構,Cilent(客戶端)通過介面與Server(伺服器)進行通訊實現容器的構建,執行和釋出。Cilent和Server可以執行在同一臺叢集,也可以跨主機實現遠端通訊。

  1. Client(客戶端)
  2. Registry(登錄檔)
  3. Images(映象)
  4. Containers(容器)
  5. Docker deamon 是docker的守護程序,Client通過命令與Docker deamon進行通訊,完成Docker相關操作。
  6. Docker host是docker的網路模式,網路模式共四種。

核心概念:      

映象(image)

      Docker image只是一個只讀的模版。

映象(Image)是(read-only layer)的統一視角

Union File System將不同的層整合成一個檔案系統,提供了 一個統一的視角,可以隱藏多層的存在,對使用者來說,只是有一個檔案系統而已。

例如:一個映象可以包含一個完整的作業系統環境,裡面僅僅安裝了Apache或者使用者需要的其他的應用程式。映象可以用來建立Docker容器,一個映象中可以建立很多容器。Docker提供了一個簡單的機制來建立,更新現有的映象,使用者也可以下載一個做好的映象直接使用。

倉庫(repository)

     Repository是一個存放映象檔案的場所。

倉庫註冊伺服器上往往存在多個倉庫,每個倉庫中又包含多個映象,每個映象有不同的標籤(tag)

倉庫分為public和private兩種形式。最大的公開倉庫是 Docker Hub存放了數量龐大的映象供使用者下載。國內有時速雲,網易雲等。使用者也可以在本地網路建立一個私有倉庫。

     Docker倉庫跟Git類似,註冊服務可以理解為GitHub這種託管服務。

容器(Container)

Docker利用容器來執行應用,容器是從映象創建出來的執行例項,容器可以,被啟動,開始,停止,刪除。每個容器都可以相互隔離,保證平臺安全。

容器和映象的區別是映象是隻讀的,容器最上面的一層是可讀可寫的。

執行時的容器被定義為一個可讀可寫的統一的檔案系統。加上隔離程序空間和包含其中的程序。

檔案隔離技術使Docker成為了一個很有潛力的虛擬化技術,一個容器中的程序可能會對檔案進行修改,刪除,建立,這些改變作用於可讀寫層。