1. 程式人生 > >docker學習——什麼是image、container、service、swarm

docker學習——什麼是image、container、service、swarm

前言

docker真的是個大坑.............,看了這麼久文件,忽然發現自己連這四個概念都不清楚..........

Image

docker文件給出的定義如下:

image大致是這麼一個東西:

  • 是一個虛擬檔案系統,在執行時與宿主機的核心共同構成linux的虛擬環境,所以在進入到容器後,會發現裡面有linux的檔案結構
  • 定義了容器執行時需要執行的命令,這部分大概指的是Dockerfile中的cmd以及entrypoint構建指令指令,指的是我們想在linux虛擬環境上執行什麼程式

我的理解是image其實就是一個模板,裡面定義了linux的檔案系統,同時指定了希望在linux虛擬環境上執行的程式

Containers

docker文件給出的定義如下:

container大致是這麼一個東西:

  • 執行image後對應的例項

container由以下幾個部分組成

  • 一個Docker映象
  • 根據docker映象以及核心形成的linux可執行環境(這是我自己的理解)

我的理解是container其實就是一個linux虛擬環境,這個虛擬環境是根據image這個模板構建出來的,如果把image比成設計圖紙,那麼container就是設計圖紙的具體實現

Service

docker文件中的定義:

在docker的getstart文件中是這麼介紹service的

這裡有點亂,我舉得這兩份資料表達的意思差不多,稍微理一下:

  • 一個service只執行一個image
  • service可以根據一個image例項化多個容器,以便讓主機分配更多的計算資源給服務程序
  • service規定了映象執行的一些規則,例如應該開放哪個埠,需要把容器複製多少份以增加服務處理能力等等

如果把土地比作計算資源,容器比作別墅,那麼service就相當於一個別墅區,為了滿足更多人購買別墅的需求,別墅區會建造更多的別墅(例項化更多容器),此時佔用的土地也就越多(佔用的計算資源),別墅區當然也會有自己的一套管理方法(規定映象執行的一些規則),例如建造多少個出口(暴露多少個埠給外界)

swarm

docker文件的定義:

其實就是多個執行docker的主機聚集在一起形成一個叢集,使用Swarm操作叢集,會使使用者感覺就像是在一臺主機上進行操作,這個比較好理解,就不打比方了

如有錯誤,歡迎指出